programing

Spring-boot와 Spring-cloud의 호환성 매트릭스가 있습니까?

javajsp 2023. 2. 23. 22:01

Spring-boot와 Spring-cloud의 호환성 매트릭스가 있습니까?

Springboot과 Springcloud 사이에 호환성 매트릭스가 있는지 궁금합니다.

STS에 관한 간단한 프로젝트를 작성했는데 호환성 문제가 발생하고 있습니다.

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Camden.SR5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

지원되는 버전의 Springboot과 Springcloud를 모두 잘 볼 수 있으면 작업이 더 쉬워집니다.

이 요구에 관한 미해결 이슈를 보았습니다(https://github.com/spring-cloud/spring-cloud-build/issues/43).

커뮤니티는 SpringCloud 프로젝트를 시작할 때 특정 버전 조합을 시작하는 방법을 선택하고 있습니까?

편집: 어제부터 발생한 문제의 다른 인스턴스를 추가합니다.

pom.xml의 단편

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
         <version>1.5.2.RELEASE</version>
        <!--<version>1.5.2.RELEASE</version> -->
        <relativePath /> <!-- lookup parent from repository -->
    </parent>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <!-- <version>Camden.SR6</version -->
                <!-- <version>Brixton.SR5</version> -->
                <!--  <version>Camden.SR6</version> -->
                <version>Camden.SR5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

1.5.2 사용에는 maven 오류가 없습니다.캠든과 함께 해제.그러나 SR5는 앱이 시작되면 NoClassDefFoundError를 발생시킵니다.

2017-03-28 09:51:15.148 ERROR 15808 --- [           main] o.s.boot.SpringApplication               : Application startup failed

java.lang.NoClassDefFoundError: org/springframework/cloud/context/named/NamedContextFactory$Specification
    at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_112]
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[na:1.8.0_112]
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_112]
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[na:1.8.0_112]
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[na:1.8.0_112]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[na:1.8.0_112]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[na:1.8.0_112]
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_112]
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[na:1.8.0_112]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_112]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_112]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_112]
    at org.springframework.cloud.netflix.feign.FeignClientsRegistrar.registerClientConfiguration(FeignClientsRegistrar.java:367) ~[spring-cloud-netflix-core-1.2.5.RELEASE.jar:1.2.5.RELEASE]
    at org.springframework.cloud.netflix.feign.FeignClientsRegistrar.registerDefaultConfiguration(FeignClientsRegistrar.java:104) ~[spring-cloud-netflix-core-1.2.5.RELEASE.jar:1.2.5.RELEASE]
    at org.springframework.cloud.netflix.feign.FeignClientsRegistrar.registerBeanDefinitions(FeignClientsRegistrar.java:87) ~[spring-cloud-netflix-core-1.2.5.RELEASE.jar:1.2.5.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:352) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:143) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:116) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:320) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:270) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:524) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at com.forecastessentials.school.SchoolUniformForecastApplication.main(SchoolUniformForecastApplication.java:12) [classes/:na]
Caused by: java.lang.ClassNotFoundException: org.springframework.cloud.context.named.NamedContextFactory$Specification
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_112]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_112]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_112]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_112]
    ... 31 common frames omitted

1.4.5를 브릭스턴과 함께 사용.SR6는 일반적으로 저에게 적합한 조합입니다.

2023년 1월 갱신

스프링 클라우드 릴리즈 트레인 스프링 부트 호환성

호환성 매트릭스
봄 구름 스프링 부트
2022.0.x 킬번 3.0.x
2021.0.3+ 일명 주빌리 2.6.x, 2.7.x
2021.0.x 주빌리 2.6.x
2020.0.3+ 일포드 2.4.x, 2.5.x
2020.0.x 일포드 2.4.x
⚠ Spring Cloud 이하 버전은 모두 수명이 다하여 더 이상 지원되지 않습니다.
봄 구름 스프링 부트
Hoxton.SR5+ 2.2.x, 2.3.x
헉스턴 2.2.x
그리니치 2.1.x
핀치리 2.0.x
에지웨어 1.5.x
돌스턴 1.5.x
Camden.SR5+ 1.4.x, 1.5.x
캠든 1.4.x
브릭스턴 1.3.x, 1.4.x
천사 1.2.x
⚠ 아래는 Spring Cloud의 이정표입니다.
봄 구름 스프링 부트
2022.0.0-M4 3.0.0-M4
2022.0.0-M3 3.0.0-M3
2022.0.0-M2 3.0.0-M2
2022.0.0-M1 3.0.0-M1
2021.0.0-M2 2.6.0-M3

출처:

  1. Spring Cloud 프로젝트 페이지
  2. Spring Cloud 2021.0.0-M2(코드명 주빌리) 이용 가능
  3. Spring Cloud 2021.0.0(코드명 주빌리) 출시
  4. 봄 클라우드 로드맵 및 EOL 발표
  5. 2022.0.0-M1 PRE참조 문서
  6. Spring Cloud 2022.0.0-M2(코드명 Kilburn) 출시
  7. Spring Cloud 2022.0.0-M3(코드명 Kilburn) 출시

다음으로 릴리즈 트레인의 Spring Boot 호환성 표를 나타냅니다.아래 표에 Camden 릴리즈 트레인은 Spring Boot 1.4.x를 기반으로 하지만 1.5.x에서도 테스트되고 있음을 나타냅니다.

호환되는 컴포넌트 버전이 기재되어 있는 각 릴리스의 릴리스 노트도 참조할 수 있습니다.

Spring Cloud Camden은 Spring Boot 1.4.x를 기반으로 구축됩니다.

하지만 나중에:

Boot 1.5 호환성 추가 및 Boot 1.3 호환성 깨짐

네, 있습니다.http://start.spring.io/actuator/info

봄 클라우드뿐만 아니라 더 많은 라이브러리가 포함되어 있지만 모든 라이브러리가 포함된 것은 아닙니다.

2022년에는 Spring Boot과 Spring Cloud의 최신 버전을 찾는 것이 여전히 지루합니다.다음은 순서입니다.

  1. https://spring.io/projects/spring-cloud에서 호환성 매트릭스를 검색하여Release Trains표에서는 스프링 부트 및 스프링클라우드 릴리즈 트레인의 버전이 일치하는지 보여 줍니다. : 2022-12-06

    2022-12-06년 봄철 릴리즈 열차 스크린샷

  2. '릴리스 트레인'은 '릴리스 트레인'입니다.
    " : : "Hoxton> ==>Hoxton.SR12

    체체: :
    https://github.com/spring-cloud/spring-cloud-release/tags에서 일치하는 최신 Spring Cloud Release Train 버전을 찾을 수 있습니다.

  3. [ Boot Version ]컬럼에서 값을 선택하고 Spring Boot 릴리즈에서 가장 일치하는 버전을 검색합니다.여기서는 https://github.com/spring-projects/spring-boot/releases 또는 (https://github.com/spring-projects/spring-boot/tags)를 참조해 주세요.
    계속"==> "==>v2.3.12.RELEASE

또 다른 정보원은 스프링 블로그 카테고리 "http://https://spring.io/blog/category/releases,"입니다만, 조금 혼란스럽습니다.

스프링 부츠와 스프링 클라우드의 정확한 버전 호환성을 얻을 수 있는 방법을 찾았습니다.

다음 URL을 방문하십시오.https://start.spring.io/actuator/info

spring-cloud": {
"Hoxton.SR12": "Spring Boot >=2.2.0.RELEASE and <2.4.0.M1",
"2020.0.5": "Spring Boot >=2.4.0.M1 and <2.6.0-M1",
"2021.0.0-M1": "Spring Boot >=2.6.0-M1 and <2.6.0-M3",
"2021.0.0-M3": "Spring Boot >=2.6.0-M3 and <2.6.0-RC1",
"2021.0.0-RC1": "Spring Boot >=2.6.0-RC1 and <2.6.1",
"2021.0.1": "Spring Boot >=2.6.1 and <2.6.5-SNAPSHOT",
"2021.0.2-SNAPSHOT": "Spring Boot >=2.6.5-SNAPSHOT and <3.0.0-M1",
"2022.0.0-M1": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},

언급URL : https://stackoverflow.com/questions/42659920/is-there-a-compatibility-matrix-of-spring-boot-and-spring-cloud