当前位置: 首页>后端>正文

Spring Boot 2.7.0 更新说明

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 现在已经成为了实事上的脚手架框架了,让学习和开发变得更简单,同时这版本的淘汰节奏也让我感觉技术更新实在太快了,所以我们也要不断保持学习,不然也会跟着淘汰。


https://www.xamrdz.com/backend/3cg1931785.html

相关文章: