Spring Boot父启动器依赖项覆盖

时间:2018-10-29 12:08:44

标签: java spring mongodb spring-boot spring-data-mongodb

因此当前版本未使用我需要使用..

的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

4 个答案:

答案 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.6.RELEASE

答案 2 :(得分:0)

按照@Boris的答案,如果您执行以下操作,则可以证明他是正确的。 到这里: https://start.spring.io/ 选择以下内容: enter image description here

创建项目演示。 如果您随后扩展并导入Intellij,然后获得有效的POM并搜索原始要求,则将发现它比原始要求高出一个修订版本。 最好的是,如果有一个网站可以显示所有版本的Spring Boot的修订组合...如果有人知道,请添加此内容。谢谢。 enter image description here

答案 3 :(得分:0)

我也遇到了这个问题,看来在低版本的spring boot中无法解决,因为MongoTransactionManager要求spring-data-mongodb版本大于2.1.0,而我的org.springframework.data只有2.0 .6。