Spring Boot 2.1 Release Notes 官网 选择性翻译:2021-10
一、从Spring Boot 2.0 升级到 Spring Boot 2.1
在 Spring Boot 2.1 版本中,Spring Boot 2.0 中的某些类、方法、属性 都已经过期了。
在升级前,需要关注过期的方法。
1.1、Spring Framework 5.1
Spring Boot 2.1 开始使用 Spring Framework 5.1 。
需要关注 Spring Framework 相关更新,官方连接
1.2、Bean Overriding
默认情况下禁用了 Bean 覆盖功能,防止 Bean 被意外覆盖,如果需要该功能,需要设置 spring.main.allow-bean-definition-overriding=true
1.3、Auto-Configuration 排除
排除自动配置类在一下这些注解上也能够支持:@EnableAutoConfiguration
, @SpringBootApplication
, @ImportAutoConfiguration
也可以通过配置属性:spring.autoconfigure.exclude
来排除自动配置类。
1.4、Actuator ‘info’ and ‘health’ Endpoint Security、
If spring-security is on the classpath without any security configuration, /info and /health are now exposed publicly for consistency. If you have spring-security on your classpath and do not provide any security configuration, you will need to explicitly secure them.
1.5、Servlet Path
server.servlet.path
属性变更为 spring.mvc.servlet.path
。
亦可以使用 DispatcherServletPath 以编程的方式替代。
1.6、Logging Refinements(细化日志打印)
Spring Framework 5.1 在使用 Web 应用程序(Spring MVC 或 Spring WebFlux)时重写了日志输出。
如果想要以 Spring Boot2.0 的风格显示,需要配置:logging.level.web=debug
如果需要显示详情细节还需要配置:spring.http.log-request-details=true
。该配置会打印一些敏感信息,所以默认:false
1.7、Maven Plugin
finalName
属性不在支持自定义,一切行为和标准的 Plugin 插件保持一致。
如果您正在定制重打包目标,那么主执行现在有一个必须指定的重打包id,请参考案例。
1.8、Spring Version POM Property
在 spring-boot-dependencies
POM 中的 spring.version
属性已经过期了。
如果继承使用内部的版本号,需要使用 spring-framework.version
替代。
通常来说建议直接使用 spring-boot-dependencies
等内置的配置及其版本即可,如非必要,不建议自行自己配置处理。
1.9、移除 spring.provides
文件
在 starter 的 META-INF/spring.provides
能够让 IDE 知道该 starter 提供了哪些相关依赖。
扫描启动器POM以找到它声明的直接依赖项就足够了。
如果负责的是第三方模块,该文件可以移除。
1.10、Endpoint ID names
如果有自定义的 actuator 端点,需要遵守 Spring Boot 2.1 命名规则。
如:IDS 必须要仅包含数字和字母,且以字母开头。
比如:-
和 .
将不在被支持,会报警。
1.11、Lombok
Spring Boot 2.1 中,Lombok 将从 1.16.x
升级为 1.18
版本。
Lombok 不在默认生成私有构造和无参构造。
如果需要支持默认生成,可以通过配置 lombok.noArgsConstructor.extraPrivate=true
。路径。
二、其他组件升级
2.1、第三方依赖库升级
Spring Boot 2.1 兼容 Java 8 ,同时支持 Java 11 。
2.3、Task Execution
Spring Boot 2.1 提供了 ThreadPoolTaskExecutor
的自动配置。
在使用注解 @EnableAsync
,自定义的 TaskExecutor
可以移除。
同样的自定义配置可以通过 spring.task.execution
进行配置。
2.4、Task Scheduling
Spring Boot 2.1 在使用 @EnableScheduling
时 支持 ThreadPoolTaskScheduler
的自动配置。
可以通过 spring.task.scheduling
自定义配置。
2.5、Spring Data JDBC Support
Spring Data 提供了 JDBC 的仓储能力,并提供了相关基础SQL操作能力,具体操作方法在 CrudRepository
接口方法定义中。
在项目中添加 spring-boot-starter-data-jdbc
依赖,Spring Boot 将自动配置 Spring Data Jdbc仓储。