SpringBoot2.6新特性詳解
1、延遲初始化設置
現在可以通過 spring.main.lazy-initialization 屬性啓用全局延遲初始化,以減少啓動時間。不過,使用此功能需要付出一定代價:
1、在進行任何延遲的初始化時,HTTP 請求的處理可能需要更長的時間 2、通常在啓動時會發生的故障現在在啓動後纔會出現
2、支持Java13
3、配置文件與類綁定獲取屬性升級
以前獲取配置文件都是在類上添加
@ConfigurationProperties
@Component
這兩個註解類,啓動類@SpringBootApplication裏包含註解@ComponentScan,會自動掃描該類,通過set方法綁定配置文件的屬性值。
但是2.2升級之後,@ConstructorBinding在類上添加,支持構造函數,如果有多個構造函數,則在構造函數上添加該註解。Spring Boot 2.2.0 中默認啓用配置屬性掃描,但從 Spring Boot 2.2.1 開始,您必須選擇使用@ConfigurationPropertiesScan
.
1、用了 @ConstructorBinding這個註解,就標識這個類的參數優先通過帶參數的構造器注入,
如果沒有帶參數的構造器則再通過setters注入;怎麼判斷是通過 setters 注入還是構造器注入,請看這個類的源碼:
org.springframework.boot.context.properties.ConfigurationPropertiesBean.BindMethod
2、當 @ConstructorBinding用在類上時,該類只能有一個帶參數的構造器;如果有多個構造器時,可以把
@ConstructorBinding直接綁定到具體的構造方法上;
3、成員變量可以是 final不可變;
4、支持該類的內部類構造器注入的形式;
5、支持默認值 @DefaultValue、@DateTimeFormat時間格式等註解配合使用;
6、需要配合 @ConfigurationProperties、@EnableConfigurationProperties註解使用;
7、不支持像 @Component、@Bean、@Import等方式創建 bean 的構造器參數綁定;