Mongo Java驱动程序版本与Spring框架不匹配

如何解决Mongo Java驱动程序版本与Spring框架不匹配

我有带有Mongo Java驱动程序3.11.2版本的springboot(2.0.4)应用程序。将mongo java驱动程序的应用程序升级到版本4.1.0以使用新mongo java驱动程序的IAM身份验证功能时,更改与整个spring框架无关。

MongoTemplate Bean代码

@Bean
public MongoClient mongoClient() {
    ConnectionString connectionString = new ConnectionString(
                    ("mongodb://connectionString:goesHere"));
    MongoClient mongoClient = MongoClients.create(connectionString);
    return mongoClient;
}
@Bean
public MongoTemplate mongoTemplate(MongoClient mongoClient) {
    return new MongoTemplate(mongoClient,mongoDB);
}

依赖项:

    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver-sync</artifactId>
        <version>4.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>bson</artifactId>
        <version>4.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver-core</artifactId>
        <version>4.1.0</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-commons</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.mongodb</groupId>
                <artifactId>mongo-java-driver</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.mongodb</groupId>
                <artifactId>mongodb-driver</artifactId>
            </exclusion>
        </exclusions>
    </dependecy>

Mongo Java驱动程序4.1.0的部署错误

通过工厂方法实例化Bean失败;嵌套的异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.springframework.data.mongodb.core.MongoTemplate]:工厂方法“ mongoTemplate”抛出了异常;嵌套异常是java.lang.NoSuchMethodError:org.springframework.util.Assert.noNullElements(Ljava / util / Collection; Ljava / lang / String;)V

研究此问题时,发现我需要为此添加sping-core(5.2.5或更高版本),这又要求其他spring依赖项在同一版本上。

这整个实现了使用spring boot以简化依赖管理的目标。 感觉Spring生态系统已经变得如此复杂,以至于升级mongo-java-driver将需要不必要的工作,即将整个应用程序升级到不向后兼容的较新版本的springboot,这会破坏应用程序的构建。任何消除该问题的建议。

解决方法

我正在使用这些pom,您可以尝试使用mongo-3.8.2和spring-data:1.10.0 。确保您没有丢失“ spring-data-commons-core jar”

private fun getCustomTabsPackage(context: Context): String? {
   val packageManager: PackageManager = context.packageManager
  val activityIntent = Intent(Intent.ACTION_VIEW,Uri.parse("http://"))
  val resolvedActivityList: List<ResolveInfo> = packageManager.queryIntentActivities(activityIntent,0)

  return resolvedActivityList
    .firstOrNull {
      val serviceIntent = Intent()
      serviceIntent.action = CustomTabsService.ACTION_CUSTOM_TABS_CONNECTION
      serviceIntent.setPackage(it.activityInfo.packageName)
      packageManager.resolveService(serviceIntent,0) != null
    }
    ?.activityInfo
    ?.packageName
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?