1、解除默认加载bootstratp配置文件
升级到2.4之后,spring.cloud.bootstratp.enabled默认为false,不再支持自动读取bootstratp配置文件,需要加依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.0.3</version> </dependency>
如果依旧用2.4版本之前的逻辑,需要额外配置
spring.config.use-legacy-processing=true
2、配置数据项迁移指南
Spring Boot 2.4 对文件application.properties
和application.yml
文件的处理方式进行了彻底改革。更新的逻辑旨在简化和合理化加载外部配置的方式。它还使我们能够提供新功能,例如spring.config.import
支持,但有些参数的组合形式却得到了限制,升级请谨慎。
如果你的应用工程只有一个简单的 application.properties 或 application.yml 文件,则可以进行无缝升级到 Spring Boot 2.4.0。
但是,如果你的配置较为复杂,比如说有指定 profile 的参数,或者有基于 profile 激活的参数,要使用新功能就需要进行一些更改。
如果没有准备升级迁移,只是想升级一下springboot版本也可以使用之前的配置数据数据逻辑,则需要切换回旧模式,为此,您应该将该spring.config.use-legacy-processing
属性设置为true
该属性需要在 Spring 中设置Environment
。最简单的方法通常是将其添加到jarapplication.properties
或application.yml
内部。
例如,你可以有一个src/main/resources/application.properties
如下:
spring.config.use-legacy-processing =true
如果想要升级2.4之后的新配置逻辑,如:
spring: profiles: "prod"
则替换为:
spring: config: activate: on-profile: "prod"
生产环境启动命令依旧不变:
$ java -jar app.jar --spring.profiles.active=prod
组合命令2.4之前
spring.profiles: "debug" spring.profiles.include: "debugdb,debugcloud"
2.4组合命令之后:
spring: profiles: group: "debug": "debugdb,debugcloud"
3、移除了 JUnit 5’s Vintage 引擎
Spring Boot 2.4.0 从 spring-boot-starter-test 中移除了 JUnit 5 Vintage 引擎,JUnit 5 可以通过 vintage 引擎来运行 JUnit 4 编写的测试用例,说白了就是兼容 JUnit 4 呗。如果你不想迁移测试用例到 JUnit 5 而继续使用 JUnit 4,添加以下 Maven 依赖即可:
<dependency> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions> </dependency>
4、配置文件属性获取新增@Name
@ConfigurationProperties(prefix = "sample") @ConstructorBinding public class SampleConfigurationProperties { private final String importValue; public SampleConfigurationProperties(@Name("import") String importValue) { this.importValue = importValue; } }
5、Java15支持
Spring Boot 2.4 现在完全支持(并针对)Java 15。支持的最低版本仍然是 Java 8。
6、回滚配置属性
特定于 Logback 的日志属性已被重命名以反映它们是特定于 Logback 的事实。以前的名称已被弃用。
以下 Spring Boot 属性已更改:
logging.pattern.rolling-file-name
→logging.logback.rollingpolicy.file-name-pattern
logging.file.clean-history-on-start
→logging.logback.rollingpolicy.clean-history-on-start
logging.file.max-size
→logging.logback.rollingpolicy.max-file-size
logging.file.total-size-cap
→logging.logback.rollingpolicy.total-size-cap
logging.file.max-history
→logging.logback.rollingpolicy.max-history
与它们映射到的系统环境属性一样:
ROLLING_FILE_NAME_PATTERN
→LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN
LOG_FILE_CLEAN_HISTORY_ON_START
→LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START
LOG_FILE_MAX_SIZE
→LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE
LOG_FILE_TOTAL_SIZE_CAP
→LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP
LOG_FILE_MAX_HISTORY
→LOGBACK_ROLLINGPOLICY_MAX_HISTORY
7、默认Servlet注册
Spring Boot 2.4 将不再注册DefaultServlet
您的 servlet 容器提供的。在大多数应用程序中,它不被使用,因为 Spring MVCDispatcherServlet
是唯一需要的 servlet。
如果您发现仍然需要默认的 servlet server.servlet.register-default-servlet
,true
则可以设置为。
8、默认情况下,HTTP跟踪不再包含cookie标头
CookieSet-Cookie默认情况下,请求标头和响应标头不再包含在 HTTP 跟踪中。要恢复 Spring Boot 2.3
的行为,请设置management.trace.http.include为cookies, errors, request-headers, response-headers。
9、Docker支持升级
当使用 Spring Boot 构建时,可以为构建器或者运行镜像使用私有授权的 Docker 私有注册中心,支持用户名/密码认证以及基于 Token 机制认证。