因此当前版本未使用我需要使用..
的spring-data-mongodb 2.1.0。问题是每次我只要通过添加
来覆盖POM中的依赖项<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
我最终遇到编译错误:
org.springframework.beans.factory.BeanCreationException:错误 创建在类中定义的名称为“ servletEndpointRegistrar”的bean 路径资源 [org / springframework / boot / actuate / autoconfigure / endpoint / web / ServletEndpointManagementContextConfiguration $ WebMvcServletEndpointManagementContextConfiguration.class]: 通过工厂方法实例化Bean失败;嵌套异常为 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: 工厂方法“ servletEndpointRegistrar”抛出异常;嵌套的 异常是org.springframework.beans.factory.BeanCreationException: 创建在类路径中定义的名称为“ healthEndpoint”的bean时出错 资源 [org / springframework / boot / actuate / autoconfigure / health / HealthEndpointConfiguration.class]: 通过工厂方法实例化Bean失败;嵌套异常为 org.springframework.beans.BeanInstantiationException:失败 实例化[org.springframework.boot.actuate.health.HealthEndpoint]: 工厂方法'healthEndpoint'抛出异常;嵌套异常为 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名称为bean的错误 'org.springframework.boot.actuate.autoconfigure.mongo.MongoHealthIndicatorConfiguration': 通过构造函数参数0表示的不满足的依赖关系; 嵌套异常为 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建在类路径中定义的名称为“ mongoTemplate”的bean时出错 资源 [org / springframework / boot / autoconfigure / data / mongo / MongoDataAutoConfiguration.class]: 通过方法“ mongoTemplate”表达的不满意依赖性 参数1;嵌套异常为 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建类中定义的名称为'mappingMongoConverter'的bean时出错 路径资源 [org / springframework / boot / autoconfigure / data / mongo / MongoDataAutoConfiguration.class]: 通过方法表达的不满意依赖性 'mappingMongoConverter'参数1;嵌套异常为 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径中定义的名称为“ mongoMappingContext”的bean 资源 [org / springframework / boot / autoconfigure / data / mongo / MongoDataAutoConfiguration.class]: Bean初始化失败;嵌套异常为 java.lang.NoSuchMethodError: org.springframework.data.mapping.context.AbstractMappingContext.setApplicationContext(Lorg / springframework / context / ApplicationContext;)V
答案 0 :(得分:3)
从Spring Boot in Action书中引用,第37页:
...在覆盖拉入的依赖项时要小心 通过Spring Boot启动程序的依赖关系进行传递。虽然不同 版本可能工作正常,可以提供很大的舒适度 知道入门者选择的版本是 经过测试可以很好地一起玩。您只应覆盖这些 特殊情况下的传递依赖(例如错误修复) 在较新的版本中。
我个人不会冒险覆盖spring-data-mongodb
版本。
如果您确实需要使用最新版本的spring-data-mongodb
,我建议将Spring Boot的版本升级到2.1.0。
答案 1 :(得分:0)
AbstractMappingContext
的API在较新的版本中已更改,因此与您当前的spring-boot版本不兼容。
我建议您将整个spring-boot版本升级到适合您所需的spring-data-mongo版本的版本。
编辑:
恐怕还没有对2.1.1版本的spring-boot支持。最新的是使用org.springframework.data:spring-data-mongodb:2.0.11.RELEASE
答案 2 :(得分:0)
按照@Boris的答案,如果您执行以下操作,则可以证明他是正确的。 到这里: https://start.spring.io/ 选择以下内容:
创建项目演示。 如果您随后扩展并导入Intellij,然后获得有效的POM并搜索原始要求,则将发现它比原始要求高出一个修订版本。 最好的是,如果有一个网站可以显示所有版本的Spring Boot的修订组合...如果有人知道,请添加此内容。谢谢。
答案 3 :(得分:0)
我也遇到了这个问题,看来在低版本的spring boot中无法解决,因为MongoTransactionManager要求spring-data-mongodb版本大于2.1.0,而我的org.springframework.data只有2.0 .6。