目前,我正在为我的项目开发一个 springboot webflux 应用程序,其中我使用了响应式蒙戈模板和其他响应式实现。现在我有一个由 WebMvc 实现的遗留 Spring Boot 应用程序(这里我不使用真正的 springboot 应用程序。只使用通过 mongoDB 配置实现的核心服务),并且它使用(普通)mongo-template 来实现其服务。在我的 webflux 应用程序中,我正在尝试使用旧应用程序中定义的旧服务。
为此,我尝试使用组件扫描 ( com.a.b.cservice.core.configuration
) 导入旧版应用程序并遇到一些错误。问题是它不会正确检测应用程序和非反应性 mongo 模板。
spring 是否只支持 1 个 mongo 连接?这些是我得到的错误日志;
[main] WARN o.s.b.w.r.c.AnnotationConfigReactiveWebServerApplicationContext - [] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'mapperDAOSpringConfigurations': Unsatisfied dependency expressed through field 'mongoTemplate'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoTemplate' defined in class path resource
[com/a/b/cservice/core/configuration/MongoConfigurations.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.mongodb.core.MongoTemplate]: Factory method 'mongoTemplate' threw exception; nested exception is java.lang.NoSuchMethodError: com.mongodb.connection.ClusterSettings.getDescription()Ljava/lang/String;
***************************
APPLICATION FAILED TO START
***************************
Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location:
com.mongodb.connection.DefaultClusterFactory.createCluster(DefaultClusterFactory.java:182)
The following method did not exist:
com.mongodb.connection.ClusterSettings.getDescription()Ljava/lang/String;
The method's class, com.mongodb.connection.ClusterSettings, is available from the following locations:
jar:file:/C:/Users/abc/.m2/repository/org/mongodb/mongodb-driver-core/4.0.5/mongodb-driver-core-4.0.5.jar!/com/mongodb/connection/ClusterSettings.class
jar:file:/C:/Users/abc/.m2/repository/org/mongodb/mongo-java-driver/3.12.7/mongo-java-driver-3.12.7.jar!/com/mongodb/connection/ClusterSettings.class
The class hierarchy was loaded from the following locations:
com.mongodb.connection.ClusterSettings: file:/C:/Users/abc/.m2/repository/org/mongodb/mongodb-driver-core/4.0.5/mongodb-driver-core-4.0.5.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of com.mongodb.connection.ClusterSettings
是否有任何解决方法可以将旧版应用程序与带有 mongoDb 的 webflux 应用程序一起使用?还是我需要将其作为单独的微服务并调用相关端点?