Spring.Factories 要被棄用了,快來Get新寫法
如果你是Spring Boot用戶的話,一定有這樣的開發體驗,當我們要引入某個功能的時候,只需要在maven或gradle的配置中直接引入對應的Starter,馬上就可以使用了,而不需要像傳統Spring應用那樣寫個xml或java配置類來初始化各種Bean。
如果你有探索過這些Starter的原理,那你一定知道Spring Boot并沒有消滅這些原本你要配置的Bean,而是將這些Bean做成了一些默認的配置類,同時利用/META-INF/spring.factories這個文件來指定要加載的默認配置。
這樣當Spring Boot應用啟動的時候,就會根據引入的各種Starter中的/META-INF/spring.factories文件所指定的配置類去加載Bean。
而這次剛發布的Spring Boot 2.7中,有一個不推薦使用的內容就是關于這個/META-INF/spring.factories文件的,所以對于有自定義Starter的開發者來說,有時間要抓緊把這一變化改起來了,因為在Spring Boot 3開始將移除對/META-INF/spring.factories的支持。
那么具體怎么改呢?下面以之前我們編寫的一個swagger的starter為例,它的/META-INF/spring.factories內容是這樣的:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.spring4all.swagger.SwaggerAutoConfiguration
我們只需要創建一個新的文件:
/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,內容的話只需要直接放配置類就可以了,比如這樣:
com.spring4all.swagger.SwaggerAutoConfiguration
注意:這里多了一級spring目錄。