Spring Boot 3.0.0的第一个里程碑版本M1发布
2022年1月20日,Spring官方发布了Spring Boot 3.0.0的第一个里程碑版本M1。
下面一起来来看看Spring Boot 3.0.0 M1版本都有哪些重大变化:
这个在最早的Spring Boot 3相关预告中就已经知道了,Java 17将成为未来的主流版本。那么问题来了,大家都把Java 17的升级提上日程了吗?如果你对Java 8之后的各种版本的信息不太了解的话,这里有份 4.6 W 字的总结,或许你可以读一读。
Spring Boot 3开始,所有的Java EE Api都需要迁移到Jakarta EE上来。大部分用户需要修改import相关API的时候,要用jakarta替换javax。比如:原来引入 javax.servlet.Filter 的地方,需要替换为 jakarta.servlet.Filter 。但还有一些依赖Java EE API的第三方库,目前还没有得到很好的支持,所以在Spring Boot 3中暂时会先移除这类组件的支持(比如: EhCache 3 、 Infinispan 、 Jolokia 、 Pooled JMS 等)。所以,目前的M1版本相较2.x版本来说,会有一些特性的缺失。当然大多数应该还只是暂时的,Spring Boot官方会等这些第三方库发布Jakarta兼容库之后再重新引入。
下面这些功能的支持被移除了,相较上一个SNAPSHOT版本增加了 Hazelcast 3
相关Spring项目的依赖版本:
第三方库的依赖版本:
后续Spring Boot团队将每两个月发布一个新的里程碑版本,所以M2版本预计将在3月24日发布,而GA版本将在11月下旬与大家见面。
升级 SpringBoot 2.6.x 版本后,Swagger 没法用了
首先我们来聊聊SpringBoot的版本,目前最新版本是 2.6.4 版本, 2.7.x 即将发布, 2.4.x 及以下版本已经停止维护了,目前的主流版本应该是 2.5.x 和 2.6.x 。具体可以看下面这张表。
首先在 pom.xml 中修改SpringBoot的版本号,注意从 2.4.x 版本开始,SpringBoot就不再使用 .RELEASE 后缀了。
具体来说就是我们的 SecurityConfig 引用了 UmsAdminService ;
而 UmsAdminServiceImpl 又引用了 PasswordEncoder ;
由于 SecurityConfig 继承了 WebSecurityConfigurerAdapter ,而Adapter又引用了 PasswordEncoder ,这样就导致了循环引用。
要解决这个问题其实很简单,你可以修改 application.yml 直接允许循环引用,不过这个方法有点粗暴,在没有其他方法的时候可以使用;
其实循环引用主要是因为会导致Spring不知道该先创建哪个Bean才会被禁用的,我们可以使用 @Lazy 注解指定某个Bean进行懒加载就可以优雅解决该问题,比如在 SecurityConfig 中懒加载 UmsAdminService 。
在Swagger的配置类中添加如下Bean可以解决该问题;
修改 application.yml 文件,MVC默认的路径匹配策略为 PATH_PATTERN_PARSER ,需要修改为 ANT_PATH_MATCHER ;
再次启动后发现Swagger已经可以正常使用了!
提到Swagger,我们一般在SpringBoot中集成的都是springfox给我们提供的工具库,看了下官网,该项目已经快两年没有发布新版本了。
再看下Maven仓库中的版本,依旧停留在之前的 3.0.0 版本。如果springfox再不出新版本的话,估计随着SpringBoot版本的更新,兼容性会越来越差的!
今天带大家体验了一把SpringBoot升级 2.6.x 版本的过程,主要解决了循环依赖和Swagger无法使用的问题,希望对大家有所帮助!
spring boot版本对应
spring-boot-starter-parent 2.0.0.RELEASE 对应 druid 1.1.9
spring-boot-starter-parent 1.5.6.RELEASE 对应 druid 1.1.3
spring-boot-starter-parent 1.5.6.RELEASE 对应 spring-cloud Dalston或者Edgware
spring-boot-starter-parent 2.0.0.RELEASE 对应 spring-cloud Finchley
其他spring-boot 和spring cloud 对应 官网对应关系
Spring Boot简明教程--Spring Boot版本号介绍
Spring官方网站为: ,Spring其实并不只是包含Spring Boot,还包含常常听说的Spring Framework、Spring Cloud、Spring Security等等,其实就是一个全家桶工具。
在Spring Boot出现之前主流web开发使用的是Spring Mvc(当然还有一些项目使用其他的web框架,如Struts2),如果必须启动一个新的 Spring web项目,我们必须添加构建路径或添加 Maven 依赖关系,配置应用程序服务器,添加 spring 配置等等。因此为了简化配置,诞生了 Spring Boot 。
在上图中(2021年1月16日)可以看到Spring Boot的不同版本号,每一个版本号我们可以看到都是由前面的数字+后面标签组成。
我们以2.3.8为例,从左到右2为主版本,3为次版本,8为增量版本
springboot2.3.4用的是几版本的spring
您好,Spring Boot 2.3.4使用的是Spring 5.2.8.RELEASE版本,它是Spring Framework 5.2.x系列的最新版本,支持Java 8和Java 11,并且支持Spring Boot 2.3.x系列的最新特性。Spring 5.2.x系列提供了新的WebFlux框架,支持Reactive编程,并且支持Spring Boot 2.3.x系列的新特性,包括增强的安全性,更好的性能,更多的可扩展性,更多的新功能和更多的新特性。
如何选择Spring Boot最稳定的版本,以及相应的Spring Cloud版本
1、登录 Spring的官网 ,查看当前最稳定的版本。
当然了,想使用Spring Cloud,还需要许多的jar包,如何选择兼容的jar包呢?在这里,我们可以考虑使maven的 dependencyManagement 功能。
dependencyManagement 其实就相当于一个对jar版本进行管理的依赖管理器,如果在 dependencies 的 dependency 里没有找到 version 属性,Maven就会去 dependencyManagement 里寻找相应的版本信息。
如果既使用了 dependencyManagement 功能,又在 dependencies 的 dependency 里指定了 version 属性, dependency 是以 version 属性为准的,所以,不用担心使用 dependencyManagement 功能之后无法自行指定jar包的版本信息。
在这里,我们选择的是alibaba的版本管理配置。
首先,进入 阿里巴巴的GitHub地址 ,进入WiKi页面,点击版本说明。
或者直接点击 版本说明
我们可以看到,2.4.2版本的Spring Boot,对应的alibaba 版本是2020.0.RC1,对应的Spring Cloud版本是2020.0,我们选择2020.0.2,最终配置如下。
我这里是为了学习,所以选择的都是最新版本,在生产环境,还是要根据实际情况来详细评估选择哪些版本,以免给自己挖坑。