Spring Boot 又接连发布了三个版本:
Spring Boot 2.7.0(最新)
Spring Boot 2.6.8
Spring Boot 2.5.14
后面两个版本都是修复 bug 版本,2.7.0 才是硬菜,毕竟等了大半年。。
老规矩,栈长重点来解读下 Spring Boot 2.7.0 都更新了什么鬼!
Spring Boot 2.7 新特性
自动配置变更(重要)
自动配置注册文件
自动配置注册有了一个比较大的调整,之前都是写在下面 文件中的:
META-INF/spring.factories
现在改名了:
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
另外格式也变了,Spring Boot 2.7 中直接每一行是一个自动配置类:
编写格式确实是比之前方便多了,但文件名确实也太长了,比较难记。。。
需要注意的是:
为了向后兼容,META-INF/spring.factories 虽然现在被标识废弃了,但现在仍然可以使用,后续可能被彻底删除,建议使用新的规范。
java 项目 fhadmin.cn
新注解(@AutoConfiguration)
新增了一个自动配置注解?@AutoConfiguration,用来代替之前的?@Configuration,用于标识新自动配置注册文件中的顶级自动配置类,由?@AutoConfiguration?注解嵌套、导入进来的其他配置类可以继续使用?@Configuration?注解。
另外,为方便起见,@AutoConfiguration?注解还支持?after,?afterNames,?before?和?beforeNames?属性进行自动配置排序,用于代替之前的?@AutoConfigureAfter?和?@AutoConfigureBefore?注解。
这个注解可以说更加细分了吧,自动配置专用注解,用专门的注解来干专门的事,这样也可以用来区分用?@Configuration?标识的普通配置类。
支持 GraphQL
GraphQL = Graph + QL(Query Language),它是一种用于 API 的基于图表化的查询语言:
Spring for GraphQL(1.0) 如今正式发布了,Spring Boot 2.7.0 也集成了对 GraphQL 的自动配置、指标支持等,Starter 名为:spring-boot-starter-graphql,Spring 大家族又新增一员。
支持 Podman
Podman 和 Docker 一样,是现在比较火热的容器引擎。
现在使用 Cloud Native Buildpacks 构建映像时,Maven 和 Gradle 插件就可以使用 Podman 容器引擎进行构建了,可用来代替 Docker 容器引擎。
牛逼啊,Podman 现在被 Spring Boot 官方支持了。
支持 RabbitStreamTemplate
现在支持自动配置 RabbitStreamTemplate,只需要配置以下参数:
spring.rabbitmq.stream.name= xxx
同时还新增了一个?RabbitStreamTemplateConfigurer?配置类来进行自定义扩展其他实例。
支持 Hazelcast
Hazelcast 和 Redis 一样,它是一款开源的分布式内存数据库,可用作分布式缓存。
Hazelcast 自动配置嵌入式服务器现在默认使用了?SpringManagerContext,可以在 Hazelcast 实例对象中注入 Spring Bean 了。另外,还引入了?HazelcastConfigCustomizer?回调接口,可用于进一步调整 Hazelcast 服务器配置。
支持 Cache2k
Cache2k 是一个开源的轻量级、高性能 Java 内存缓存库。
现在添加了?Cache2k?的依赖项管理和自动配置,也可以通过定义一个?Cache2kBuilderCustomizer??实例 Bean 来自定义默认缓存设置。
Web Server SSL 增强
嵌入式 Web 服务器 SSL 配置增强了,可以配置带有 PEM 编码证书和私钥文件的 SSL。
使用以下参数进行配置:
server.ssl.certificate
server.ssl.certificate-private-key
server.ssl.trust-certificate(可选)
server.ssl.trust-certificate-private-key(可选)
另外,也可以使用类似的?management.server.ssl.*?属性来保护管理端点。
info 端点增强
操作系统信息
现在?/info?端点支持暴露应用程序运行时的一些操作系统信息:
{"os":{"name":"Linux","version":"5.4.0-1051-gke","arch":"amd64"}}
不过默认是禁用的,有需要的可以手动开启:
management.info.os.enabled=true
Java 供应商信息
现在?/info?端点中的 Java 供应商添加了供应商版本信息:
{"java":{"vendor":{"name":"Eclipse Adoptium","version":"Temurin-17.0.1+12"},"..."}
需要注意的是:?并非所有供应商都公开?java.vendor.version?系统属性,所以,获取版本属性时可能为空。
单元测试加强
新增了?@DataCouchbaseTest?和?DataElasticsearchTest?注解,可用于测试使用了 Spring Data Couchbase 和 Spring Data Elasticsearch 的应用程序。
最新支持版本
栈长整理了 Spring Boot 的最新版本支持情况:
版本发布时间停止维护时间停止商业支持
2.7.02022-05-192023-05-182024-08-22
2.6.02021-12-172022-11-242024-02-24
2.5.x2021-05-20已停止2023-08-24
2.4.x2020-11-12已停止2023-02-23
2.3.x2020-05-15已停止2022-08-20
2.2.x2019-10-16已停止已停止
2.1.x2018-10-10已停止已停止
2.0.x2018-03-01已停止已停止
1.5.x2017-01-30已停止已停止
大部分版本要么停止维护,或者仅提供商业支持,随着 2.7 的发布,现在连 Spring Boot 2.5 也停止维护了:
能用的也就 Spring Boot 2.6 及以上的版本了,并且,Spring Boot 2.6.0 在今年 11/24 也会停止维护。。
总结
Spring Boot 2.7.0 新增了不少新特性,变化真的还挺大的,特别是自动配置的变更,有明显调整,大家要特别注意。
Spring Boot 现在已经成为了实事上的脚手架框架了,让学习和开发变得更简单,同时这版本的淘汰节奏也让我感觉技术更新实在太快了,所以我们也要不断保持学习,不然也会跟着淘汰。