Spring Boot 2.7.0 重磅发布!
Hollis的新书限时折扣中,一本深入讲解Java基础的干货笔记!
这几天是 Spring 版本日,很多 Spring 组件都发布了新版本, Spring Framework 6.0.0 发布了第 4 个里程碑版本,此版本包含所有针对 5.3.20 的修复补丁,以及特定于 6.0 分支的 39 项修复和改进。
早上起来刷推的时候,无意间看到 Spring Boot 2.7.0 都已经在昨天发布了。
不仅仅是 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)。自 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的依赖项管理和自动配置。可以通过定义Cache2kBuilderCustomizer
bean 来自定义默认缓存设置。
Jackson Mixin 简化注册
Jackson 的自动配置现在将扫描您的应用程序包以查找带有@JsonMixin
注解的Mixin类并注册到 ObjectMapper
。
其它
还有其它一些依赖升级,具体看官方的发行说明。
Spring Security
在昨天Spring Security 5.7.1, 5.6.5, 5.5.8相继发布,在此之前Spring Security 6.0.0的M5版本发布。
总结
现在版本迭代越来越快了,需要我们紧跟步伐,稍不注意就落后一大截了,学习压力是真的大。
完
往期推荐
选Redis做 mq 的人,是水平欠缺么?
被通知一个月离职,我修改了项目中的所有注释……
Mybatis-Plus官方发布分库分表神器,一个依赖轻松搞定!
有道无术,术可成;有术无道,止于术
欢迎大家关注Java之道公众号
好文章,我在看❤️