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 機制認證。