Spring Boot父级启动程序1.5.10.RELEASE

时间:2018-07-06 12:17:59

标签: spring spring-boot maven-3 spring-io maven-bom

这是我的Maven依赖项

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.10.RELEASE</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
  </dependencies>

我要实现的目标是将spring core从4.3.14.RELEASE更改为4.3.4.RELEASE。是的,默认情况下,Spring Boot启动程序使用的是Spring Core 4.3.14,可以将其扩展到5.0.7.RELEASE,因为我尝试不包括spring-core并包含4.3.4.RELEASE

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.10.RELEASE</version>
            <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
            </exclusion>
            </exclusions>
                <scope>import</scope>
            <type>pom</type>
        </dependency>
       <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-core</artifactId>
               <version>4.3.4.RELEASE</version>
      </dependency>
</dependencies>

当我尝试构建时,会引发以下期望

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Unsatisfied dependency expressed through method 'setFilterChainProxySecurityConfigurer' parameter 1; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is java.lang.NoSuchMethodError: org.springframework.core.convert.support.DefaultConversionService.getSharedInstance()Lorg/springframework/core/convert/ConversionService;

不可能手动添加每个依赖项,因为应用程序正在使用大量依赖项,并且与其他依赖项的兼容性将是另一项艰巨的工作。

那么有什么解决方法吗?

注意:-尝试与spring framework-bom和spring IO一起使用,但找不到任何解决方案,也许我错过了一些东西。这些例子值得欢迎。

1 个答案:

答案 0 :(得分:0)

您实际上不应该这样做。 Spring Framework> Spring Boot> Spring Cloud> Data Flow全部管理这些依赖是有原因的。您应该让spring处理依赖关系,并根据需要升级您的实现。

https://spring.io/blog/2016/04/13/overriding-dependency-versions-with-spring-boot

对此进行更详细的回答。

  

要这样做是很合理的,但是应该做到   请谨慎,因为较新版本的传递依赖项可以   轻松打破依赖于Spring较早版本的功能   开机当您执行此操作并应用以下修复程序之一时,您就是   与Spring Boot的依赖管理脱离   说“嘿,我知道我在做什么,请相信我。”不幸的是,   有时您需要这样做以利用新功能   第三方库中的功能。如果您不需要新版本   (或其他任何外部传递依赖项)   需要),那么就不要这样做,只要坚持快乐的道路,让Spring   引导管理依赖项。