springboot查找配置文件路徑的過程

spring加載配置文件是經過listener監視器實現的,在springboot啓動時:spring

 

在容器啓動完成後會廣播一個SpringApplicationEvent事件,而SpringApplicationEvent事件是繼承自ApplicationEvent時間的,代碼以下:springboot

 

 

因爲ConfigFileApplicationListener監聽器實現了SmartApplicationListener接口,而SmartApplicationListener接口繼承了ApplicationListener<ApplicationEvent>接口,因此能監聽到上面廣播出來的SpringApplicationEvent事件app

在ConfigFileApplicationListener中監聽事件的方法:ide

 

 

 postProcessEnvironment方法是查找application.yml配置文件的入口方法:post

 

在load方法裏面纔是真正查找配置文件的過程:idea

 

 

ocaltion有多種,能夠自行debug:有file:./和file:./config和classpath等目錄;spa

文件類型默認的有四種:properties、xml、yml、yamldebug

最後查找的具體路徑:location + name + "-" + profile + "." + ext

xml

根據拼出來的路徑去查找配置文件,通常配置文件都放在classpath目錄下面,當讀取到classpath目錄下的配置文件的時候,程序去加載配置文件:blog

 

 當加載配置文件時,程序先會讀取配置文件的spring.profiles.active屬性,肯定加載什麼環境的配置文件(我是加載dev的):

 

 而後在讀取到的配置文件的屬性加載到profiles隊列中從新加載配置文件,代碼以下,因此任何項目都必須現有一個基礎的配置文件,如application.yml,而後在這個配置文件裏面有一個active屬性;

 

 程序會先拿到這個屬性,放到profiles屬性中,從新去加載配置文件如application-dev.yml,

 

 

注:這篇文章是爲了解決配置文件找不到而寫的,是爲了解決問題而寫的,主要是解析查找配置文件路徑的過程,具體的解析配置文件的過程,讀者能夠細看源碼,最後我也找到了配置文件爲何找不到的緣由,主要是由於idea編譯時,classpath路徑下面沒有application.yml文件,複製配置文件到classpath目錄下,問題就解決了!

相關文章
相關標籤/搜索