Spring Boot 之 spring.factories
引言
????????在java spring cloud項目中,我們常常會在子模塊中創(chuàng)建公共類庫,作為驅(qū)動包。那么在另外一個子模塊中,需要加載配置文件的時候,往往Spring Boot 自動掃描包的時候,只會掃描自己模塊下的類。
問題
如果想要被Spring容器管理的Bean的路徑不再Spring Boot 的包掃描路徑下,怎么辦呢?也就是如何去加載第三方的Bean 呢?
首先一個Swagger的配置類:SwaggerConfig
工程結(jié)構(gòu)圖

????????發(fā)現(xiàn)我的SwaggerConfig 類和 SpringBoot 的啟動類ConfigApplication.java 不在同一級目錄下,所以當Spring Boot 自動掃描包的時候,是掃描不到我的SwaggerConfig 的配置的,也就在控制臺沒有Swagger的打印的信息:

????????所以這時候我如果想要把SwaggerConfig 加載到Spring容器中的話 要怎么辦呢?下面介紹兩種方式
使用@Import注解直接導入

創(chuàng)建spring.factories
現(xiàn)在我們將其改造一下,采用spring.factories 的方式去加載SwaggerConfig類,在resources目錄下新建一個META-INF 的目錄,然后在新建一個spring.factories 的文件,里面的內(nèi)容為:
=\com.sg.config.SwaggerConfig
然后在把Spring Boot 啟動類上的@Import注釋掉,啟動發(fā)現(xiàn)也可以把SwaggerConfig加載到Spring 容器中

????????到這就完成了加載一個Spring 不能掃描到的一個類,他可以是第三方的,也可以是自己寫的,只要是Spring Boot 默認掃描路徑不能夠掃描到,都可以使用這種方式去加載!!!
評論
圖片
表情
