查看原文
其他

Spring Boot 2.7.0 发布,2.5 停止维护,节奏太快了吧

ImportNew 2022-10-20

The following article is from 码农小胖哥 Author 请star一下

这几天是 Spring 版本日,很多 Spring 工件都发布了新版本, Spring Framework 6.0.0 发布了第 4 个里程碑版本,此版本包含所有针对 5.3.20 的修复补丁,以及特定于 6.0 分支的 39 项修复和改进。而今天 Spring Boot 2.7.0 和 Spring Security 的几个分支都发布了新版本,尤其 Spring Boot 2.7.0 是一个非常重要的版本。


Spring Boot 2.7.0


本次最重要的是 Spring Boot 2.7.0 的发布,此版本添加了大量新功能和改进,是一个非常重要的版本。东西太多挑重点说一下。


自动配置的更改


Spring Boot 2.7.0 对自动配置进行了不小的改动。


自动配置注册


现在 Spring 自动配置类全限定名在 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports.  中;而以前在 META-INF/spring.factories 中。现在仍然向后兼容,它们两个都会生效,但是不推荐从 spring.factories 加载自动配置。


新的 @AutoConfiguration 注解


引入了新的 @AutoConfiguration 注释。这个类用于声明在上面自动配置注册中的 AutoConfig 类,它替代了 @Configuration,只有自动配置类才能使用。你还可以通过其 after、afterNames、before、beforeNames 属性代替 @AutoConfigureAfter和 @AutoConfigureBefore。


@AutoConfiguration(after = SecurityAutoConfiguration.class)@ConditionalOnWebApplication(type = Type.SERVLET)@EnableConfigurationProperties(SecurityProperties.class)@ConditionalOnClass({ AbstractSecurityWebApplicationInitializer.class, SessionCreationPolicy.class })public class SecurityFilterAutoConfiguration {}


测试自动化配置


如果创建了自己的自动化配置类测试,你也应该参考上面自动配置注册的方式配置自动化配置类。参考 Spring Boot 项目中的 spring-boot-test-autoconfigure 模块。


@SpringBootTest 配置项优先级


现在你可以通过 @SpringBootTest 的 properties 属性或 @TestPropertySource 注解添加的测试属性,它的优先级高于通过命令行传递给 args 的属性。


新的 Flyway 模块


Spring Boot 2.7 升级到 Flyway 8.5。自 8.0 版本以来,Flyway 对多个数据库的支持已被提取到新模块中:


  • flyway-firebird (Firebird)
  • flyway-mysql (MariaDB and MySQL)
  • flyway-sqlserver (SQL Server)


如果您使用 Flyway 管理上述数据库,请添加相应新模块的依赖项。


H2 数据库的 2.1 版本


Spring Boot 2.7 已经升级到 H2 2.1.120。H2 2.x 向后不兼容并修复了许多安全漏洞。


OkHttp 4


由于 OkHttp 3 不再维护 ,Spring Boot 2.7 已升级到 OkHTTP 4。作为此次升级的一部分,用于控制 OkHttp 版本的属性已从 okhttp3.version 更改为 okhttp.version。如果你希望使用OkHttp 3,请修改为对应版本。


对 Elasticsearch 的 RestHighLevelClient 的支持已弃用


Elasticsearch 已弃用其 RestHighLevelClient。与此一致,Spring Boot 的自动配置 RestHighLevelClient 已被弃用。在可能的情况下,应使用自动配置的低级别 RestClient。或者,考虑手动配置新客户端。


Spring Boot 2.5 的弃用


在 Spring Boot 2.5 中不推荐使用的类、方法和属性已在此版本中删除。请确保在升级之前您没有调用过时的方法。


注意:Spring Boot 2.5 版本已经停止OSS支持, 不再提供免费的安全更新和错误修复。


Spring GraphQL 支持


Spring Boot 2.7 现在支持 Spring GraphQL,对应的 starter 是 spring-boot-starter-graphql。GraphQL 是一种用于 API 的查询语言,同时也是一个可以满足数据查询的语言。


不透明令牌自省优化


如果您在 OAuth2 资源服务器中使用不透明令牌自省,则自动配置的自省不再需要对 com.nimbusds:oauth2-oidc-sdk 的依赖。您能够从应用程序中删除该依赖项。


Couchbase 和 Elasticsearch 测试注解


增加了 @DataCouchbaseTest@DataElasticsearchTest 分别用来测试 Couchbase 和 Elasticsearch 数据库。


Podman 支持


Maven 和 Gradle 插件现在支持在使用 Cloud Native Buildpacks 构建映像时使用 Podman 容器引擎作为 Docker 引擎的替代方案。


难道 Docker 不香了吗?


Cache2k 支持


添加了对缓存 Cache2k 的依赖项管理和自动配置。可以通过定义  Cache2kBuilderCustomizerbean 来自定义默认缓存设置。


Jackson Mixin 简化注册


Jackson 的自动配置现在将扫描您的应用程序包以查找带有 @JsonMixin 注解的 Mixin 类并注册到 ObjectMapper。


其它


还有其它一些依赖升级,具体看官方的发行说明。


https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.7-Release-Notes


Spring Security


与此同时 Spring Security 5.7.1、5.6.5、5.5.8 相继发布。在此之前 Spring Security 6.6.0 的 M5 版本发布。


总结


现在版本迭代越来越快了,需要我们紧跟步伐,稍不注意就落后一大截了,学习压力是真的大。


- EOF -

推荐阅读  点击标题可跳转

1、Spring Boot官宣:正式弃用 Java 8

2、Spring Boot引起的“堆外内存泄漏”排查及经验总结

3、别再自己瞎写工具类了,Spring Boot 内置工具类应有尽有, 建议收藏!!


看完本文有收获?请转发分享给更多人

关注「ImportNew」,提升Java技能

点赞和在看就是最大的支持❤️


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存