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