ApplicationListener是SpringBoot的監聽器,提供了四種事件:
- ApplicationStartedEvent :spring boot啟動開始時執行的事件
- ApplicationEnvironmentPreparedEvent:spring boot 對應Enviroment已經准備完畢,但此時上下文context還沒有創建。
- ApplicationPreparedEvent:spring boot上下文context創建完成,但此時spring中的bean是沒有完全加載完成的。
- ApplicationFailedEvent:spring boot啟動異常時執行事件
因此,我們可以實現該接口,在系統啟動的時刻初始化我們自定義的參數。
案例場景:
項目中配置文件一般是外化的,spring boot使用yml文件,項目打包時不希望把yml文件打入jar包,而是在項目中指定yml所有目錄
該目錄地址和yml文件的名字,在系統啟動時,通過java -jar 項目jar包 -DXXXX 指定這些參數 (動態入參)
如果不指定,則使用默認路徑和文件名
**********************************
java -Dkey=value :在虛擬機的系統屬性中設置屬性名/值對,運行在此虛擬機上的應用程序可用
System
.getProperty("key")
得到value的值
參考: