Java 修复不推荐的SimpleMongoDbFactory到SimpleMongoClientDbFactory中断嵌入式Mongo测试

Java 修复不推荐的SimpleMongoDbFactory到SimpleMongoClientDbFactory中断嵌入式Mongo测试,java,mongodb,spring-boot,embedded-database,Java,Mongodb,Spring Boot,Embedded Database,我从事的一个项目是扩展SimpleMongoFactory以实现多租户 public class MultiTenantMongoFactory extends SimpleMongoDbFactory { 从SpringBoot2.1.10迁移到2.2.1后,我们尝试使用推荐的类修复弃用警告 SimpleMongoClientDbFactory 编译和应用程序运行良好,但集成测试失败 我的分析是自动配置类嵌入了MongoutoConfiguration代码: @ConditionalOnCl

我从事的一个项目是扩展SimpleMongoFactory以实现多租户

public class MultiTenantMongoFactory extends SimpleMongoDbFactory {
从SpringBoot2.1.10迁移到2.2.1后,我们尝试使用推荐的类修复弃用警告

SimpleMongoClientDbFactory

编译和应用程序运行良好,但集成测试失败

我的分析是自动配置类嵌入了MongoutoConfiguration代码:

@ConditionalOnClass({ MongoClient.class, MongoClientFactoryBean.class })
static class EmbeddedMongoClientDependsOnBeanFactoryPostProcessor
        extends MongoClientDependsOnBeanFactoryPostProcessor {

    EmbeddedMongoClientDependsOnBeanFactoryPostProcessor() {
        super(MongodExecutable.class);
    }

}
这将要求:

super(MongoClient.class, MongoClientFactoryBean.class, dependsOn);
仅适用于不推荐使用的com.mongodb.MongoClient,不推荐使用com.mongodb.client.MongoClient


EmbeddedMongoAtoConfiguration是否与推荐的类兼容是一个问题。

尝试mongoDB的新API:SimpleMongoClientDatabaseFactory

尝试mongoDB的新API:SimpleMongoClientDatabaseFactory

mongoDB Java驱动程序的作者已经实现了一个升级的客户机堆栈,但也保留了原始版本它包括许多具有不同名称空间但名称相似的新组件。这导致了关于什么是合适的组件的大量混淆。此外,他们并没有贬低旧链中的每个组件。此更改发生在Java驱动程序的2.X和3.X分支之间。有关更多详细信息,请参阅。我发现通过对象的完整名称空间而不是使用导入语句来完全限定对象很有帮助。这有助于我跟踪驱动程序中的新旧内容。感谢您的回复,但我不确定这是否与我的pb有关。我提高了我的分析能力。我们使用的是Spring类new MongoClientFactorymongoProperties,env.createMongoClientFull,它实际上通过嵌入MongoAtoConfiguration类在Spring环境中设置的属性检测到我们处于测试环境中。Spring中没有类可以对client.MongoClient执行相同的操作,因此我怀疑srping没有提供完整的support@Zejuho你能解决这个问题吗?@Karthikeyan,上次我在这个项目上工作时,我们恢复到不推荐的MongoClient,以便能够使用EmbeddedMongoutoAtoConfiguration。我很确定我们会关注spring boot版本,我将在本周检查最新的spring boot 2.2的当前情况。MongoDB Java驱动程序的作者已经实现了一个升级的客户端堆栈,但也保留了原始版本,其中包括许多具有不同名称空间但名称相似的新组件。这导致了关于什么是合适的组件的大量混淆。此外,他们并没有贬低旧链中的每个组件。此更改发生在Java驱动程序的2.X和3.X分支之间。有关更多详细信息,请参阅。我发现通过对象的完整名称空间而不是使用导入语句来完全限定对象很有帮助。这有助于我跟踪驱动程序中的新旧内容。感谢您的回复,但我不确定这是否与我的pb有关。我提高了我的分析能力。我们使用的是Spring类new MongoClientFactorymongoProperties,env.createMongoClientFull,它实际上通过嵌入MongoAtoConfiguration类在Spring环境中设置的属性检测到我们处于测试环境中。Spring中没有类可以对client.MongoClient执行相同的操作,因此我怀疑srping没有提供完整的support@Zejuho你能解决这个问题吗?@Karthikeyan,上次我在这个项目上工作时,我们恢复到不推荐的MongoClient,以便能够使用EmbeddedMongoutoAtoConfiguration。我很确定我们会关注SpringBoot的发布,我将在本周查看最新的SpringBoot2.2的当前情况。