我想知道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.RELEASE 与 Camden.SR5 一起使用没有 Maven 错误,但是当应用程序启动时它会抛出 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 与 Brixton.SR6 结合使用通常对我来说效果很好。
Spring Cloud 发布火车 Spring Boot 兼容性
兼容性矩阵 |
---|
春云 | 春季启动 |
---|---|
2022.0.x 又名 Kilburn | 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以下版本已全部停产,不再支持 |
---|
春云 | 春季启动 |
---|---|
霍克斯顿.SR5+ | 2.2.x, 2.3.x |
霍克斯顿 | 2.2.x |
格林威治 | 2.1.x |
芬奇利 | 2.0.x |
埃奇韦尔 | 1.5.x |
达尔斯顿 | 1.5.x |
卡姆登.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 |
来源:
这里是 release train Spring Boot 兼容性表。在表格下方,有一条注释表明 Camden 发布序列基于 Spring Boot 1.4.x 构建,但也使用 1.5.x 进行了测试
您还可以阅读每个版本的发行说明,其中记录了兼容的组件版本:
但后来:
是的,有:http://start.spring.io/actuator/info
它包含的库不仅仅是 spring-cloud,但不是每个库都包含。
2023,找到最新的匹配版本的Spring Boot和Spring Cloud仍然很乏味......这里有一个过程:
在 https://spring.io/projects/spring-cloud
Release Trains
表中查找兼容性矩阵,它显示了 Spring Boot 和 Spring Cloud Release Train 版本匹配。截至 2022-12-06 发布列车:
点击“Release Train”栏中的链接(屏幕截图:在左侧)以访问 Spring Cloud 发行说明,其中提到了最新的“Release Train”版本。
例如:“
Hoxton
==> Hoxton.SR12
”。从“引导版本”列中选择值并在 Spring Boot 版本中查找最高匹配版本,此处:https://github.com/spring-projects/spring-boot/releases 或(更快)这里:https://github.com/spring-projects/spring-boot/tags
.
示例继续:“==>
v2.3.12.RELEASE
”.另一个信息来源是 Spring 博客类别“发布”:https://spring.io/blog/category/releases
,但恕我直言,这有点......令人困惑。我找到了一种方法来获得 spring boot 和 spring cloud 之间的确切版本兼容性。
"� 7621 �只需访问此 URL:https://start.spring.io/actuator/info
\n"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"
},