Spring boot各版本特性
2021-05-15 本文已影响0人
三无架构师
以下供技术升级所使用。建议使用2.3.x或2.4.x。
一、Spring boot各版本特性
2.2.X
- 性能提升
- 默认禁用JMX: 缩短应用启动时间,减少资源浪费。
- 延迟初始化:通过
spring.main.lazy-initialization
属性启用全局延迟初始化,以减少启动时间 - 禁用其他JPA扫描改善了启动性能:SpringBoot已提供了自己的JPA扫描。
- 大型配置文件绑定更快
- 更高效的bean创建和注入
- 支持Java 13
- 被
@ConfigurationProperties
注解的类被初始化为bean - RSocket支持
- 支持Gradle 6
- 支持第三方类上的构造器参数绑定
- 依赖变化:
- 所有JavaEE依赖项用等效的Jakarta EE依赖替换。
- Spring Framework 5.2
- JUnit 5
- 其它依赖包升级
- 配置更改:如
- logging.file属性已重命名为logging.file.name
- logging.path属性已重命名为logging.file.path
2.3.X
- 优雅停机:在关闭时,服务器将不再允许新的请求,并将等待完成的请求给个宽限期让它完成,可以通过
spring.lifecycle.timeout-per-shutdown-phase=xxx
来配置,默认为30s
, 默认情况下,没有开启,通过添加server.shutdown=graceful
配置开启。 - 配置属性的调整:可通过
spring-boot-properties-migrator
依赖打印替换日志 - 删除不推荐使用的类/方法/属性
- 配置文件位置支持通配符:如
/config/*/
,只支持jar包外 - web下的日期转换支持配置:
- spring.mvc.format.date
- spring.mvc.format.date-time
- spring.mvc.format.time
- spring.webflux.format.date
- spring.webflux.format.date-time
- spring.webflux.format.time
- 依赖升级
- 核心依赖升级:
- 第三方类库升级:
- 支持Java 14
- 嵌入式Servlet Web Server线程配置:
server.xx.threads.max
- WebFlux基础路径配置:支持
spring.webflux.base-path=xx
- 服务可用性探针:
management.health.probes.enabled=true
- Actuator增强:
- docker容器支持:
- 支持Cloud Native Buildpacks构建镜像
- maven 插件 增加 spring-boot:build-image 、gradle增加bootBuildImage task 帮助快速构建镜像
- 支持jar 分层,更好的优化打包镜像过程
2.4.X
- 版本命名更改:去除了RELEASE后缀
- 支持Java 15
- Junit 5移除了Vintage Engine
- 配置数据导入:通过
spring.config.location
和spring.config.import
明确指定配置位置,如果不存在,则不会静默失败,如果想忽略不存在,则在前面加optional,如:spring.config.location=optional:/etc/config/application.properties
,如果想把所有位置都当作optional,可以设置spring.config.on-not-found=ignore
- 嵌入数据库改进:只有在内存中才认为数据库是嵌入式的。
- 不再注册servlet容器提供的DefaultServlet
- HTTP traces不再包含Cookie请求头和Set-Cookie响应头
- 构建jar自动优化,自动删除空的starter
- 全新的cron定时任务支持:@yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly
- 依赖升级:
- Spring Framework 5.3
- Spring Kafka 2.6
- 第三方依赖升级
- Undertow 2.2
- Lettuce 6.0
- JUnit 5.7
- Docker支持升级:
- 镜像发布:Spring Boot Maven 插件的 spring-boot:build-image 指令和 Gradle 插件的 bootBuildImage 任务现在可以直接发布 Docker 镜像到 Docker 注册中心了
- 授权机制:使用私有授权的 Docker 私有注册中心,支持用户名/密码认证以及基于 Token 机制认证。
- 默认支持分层jar,减少容器镜像构建
2.5.X
- 运行端点变更
- /info不再对外公开
- 优雅关机支持GET请求
- 记录停机日志
- 增加Quartz的Actuator Endpoint: /actuator/quartz
- 增强容器化功能
- war包支持分层
- buildpack支持配置自定义
- Environment前缀:以便在同一环境运行多个不同的应用,使用
SpringApplication.setEnvironmentPrefix(…)
设置绑定属性时要使用的前缀。 - Metrics增强
- HTTP/2 over TCP(h2c): 只需将
server.http2.enabled
设置为true
并将server.ssl.enabled
设置为false
(默认false
)。微服务全栈 h2c 还需要打通 feign 和 RestTemplate 这种 http 客户端 - 数据源相关增强:
二、细节
优雅停机
其生效,但其触发后,不再接收新请求,在使用slb时比较方便,但使用eureka时,该方式仍然不够优雅,因为其它服务仍然能看到该服务,但该服务又不可用。
其只解决了当前请求完整性
版本支持时间
- 2.4.x: 支持的版本。2020.11发布,支持到2022.08
- 2.3.x: 支持的版本。2020.05发布,支持到2022.02
- 2.2.x:支持的版本。2019.10发布,支持到2021.07
- 2.1.x:生命已终止的版本。2018.10发布,于到2020.10月停止维护
- 2.0.x:生命已终止的版本。2018.3发布,2019.4停止维护
- 1.5.x:生命已终止的版本。2017.1发布,是最后一个1.x分支,2019.8.1停止维护