0
点赞
收藏
分享

微信扫一扫

重磅!Spring Boot 2.7 正式发布,一大波新特性,看完我彻底躺平了。。

Xin_So 2022-05-24 阅读 102

Spring Boot 2.7 来了

大家好,我是栈长。

​​Spring Boot 2.6.0​​ 发布已经过去大半年了,现在 Spring Boot 2.7.0 如期而至:

重磅!Spring Boot 2.7 正式发布,一大波新特性,看完我彻底躺平了。。_java

重磅!Spring Boot 2.7 正式发布,一大波新特性,看完我彻底躺平了。。_java_02

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 正式发布,一大波新特性,看完我彻底躺平了。。_spring_03

另外格式也变了,Spring Boot 2.7 中直接每一行是一个自动配置类:

重磅!Spring Boot 2.7 正式发布,一大波新特性,看完我彻底躺平了。。_spring_04

编写格式确实是比之前方便多了,但文件名确实也太长了,比较难记。。。

需要注意的是:


为了向后兼容,META-INF/spring.factories 虽然现在被标识废弃了,但现在仍然可以使用,后续可能被彻底删除,建议使用新的规范。


Spring Boot 基础就不介绍了,推荐下这个实战教程:


​​https://github.com/javastacks/spring-boot-best-practice​​


新注解(@AutoConfiguration)

新增了一个自动配置注解 ​​@AutoConfiguration​​​,用来代替之前的 ​​@Configuration​​​,用于标识新自动配置注册文件中的顶级自动配置类,由 ​​@AutoConfiguration​​​ 注解嵌套、导入进来的其他配置类可以继续使用 ​​@Configuration​​ 注解。

另外,为方便起见,​​@AutoConfiguration​​​ 注解还支持 ​​after​​​, ​​afterNames​​​, ​​before​​​ 和 ​​beforeNames​​​ 属性进行自动配置排序,用于代替之前的 ​​@AutoConfigureAfter​​​ 和 ​​@AutoConfigureBefore​​ 注解。

这个注解可以说更加细分了吧,自动配置专用注解,用专门的注解来干专门的事,这样也可以用来区分用 ​​@Configuration​​ 标识的普通配置类。

支持 GraphQL

GraphQL = Graph + QL(Query Language),它是一种用于 API 的基于图表化的查询语言:

重磅!Spring Boot 2.7 正式发布,一大波新特性,看完我彻底躺平了。。_商业_05

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 的应用程序。

其他更多

除了上面列出的更新之外,在其他方面都还有许多小的调整和改进,栈长这里就不一一介绍了,感兴趣的可以看下官方发布说明:


​​https://spring.io/blog/2022/05/19/spring-boot-2-7-0-available-now​​


最新支持版本

栈长整理了 Spring Boot 的最新版本支持情况:

版本

发布时间

停止维护时间

停止商业支持

2.7.0

2022-05-19

2023-05-18

2024-08-22

​​2.6.0​​

2021-12-17

2022-11-24

2024-02-24

​​2.5.x​​

2021-05-20

已停止

2023-08-24

​​2.4.x​​

2020-11-12

已停止

2023-02-23

​​2.3.x​​

2020-05-15

已停止

2022-08-20

​​2.2.x​​

2019-10-16

已停止

已停止

​​2.1.x​​

2018-10-10

已停止

已停止

​​2.0.x​​

2018-03-01

已停止

已停止

​​1.5.x​​

2017-01-30

已停止

已停止

大部分版本要么停止维护,或者仅提供商业支持,随着 2.7 的发布,现在连 Spring Boot 2.5 也停止维护了:

重磅!Spring Boot 2.7 正式发布,一大波新特性,看完我彻底躺平了。。_spring_06

能用的也就 Spring Boot 2.6 及以上的版本了,并且,Spring Boot 2.6.0 在今年 11/24 也会停止维护。。

总结

Spring Boot 2.7.0 新增了不少新特性,变化真的还挺大的,特别是自动配置的变更,有明显调整,大家要特别注意。

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

如果你还没用过 Spring Boot,今天我就送你一份 《​​Spring Boot 学习笔记​​》这个很全了,包括底层实现原理及代码实战,非常齐全,助你快速打通 Spring Boot 的各个环节。

往期 Spring Boot 教程及示例源码整理:


​​https://github.com/javastacks/javastack​​


最后,你们用的哪个 Spring Boot 版本呢?

欢迎来投票统计看下!

好了,今天的分享就到这里了,后面栈长会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号Java技术栈第一时间推送。


版权声明: 本文系公众号 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,抄袭者一律举报+投诉,并保留追究其法律责任的权利。


重磅!Spring Boot 2.7 正式发布,一大波新特性,看完我彻底躺平了。。_java_07

举报

相关推荐

0 条评论