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-dependenciesPOM 中的 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、第三方依赖库升级

  • Tomcat9
  • Undertow 2
  • Hibernate 5.3
  • Juint 5.2
  • Micrometer 1.1

    2.2、支持 Java 11

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仓储。

2.6、