Spring通過ApplicationListener接口來觸發contextrefreshedevent事件
在開發時有時候需要在整個應用開始運行時執行一些特定代碼,比如初始化環境,准備測試數據、加載一些數據到內存等等。
在Spring中可以通過ApplicationListener來實現相關的功能,加載完成后觸發contextrefreshedevent事件(上下文件刷新事件)
例如:定時任務
上述中解決了一個問題:
會存在一個問題,在web 項目中(spring mvc),系統會存在兩個容器,一個是root application context ,另一個就是我們自己的 projectName-servlet context(作為root application context的子容器)。
這種情況下,就會造成onApplicationEvent方法被執行兩次。為了避免上面提到的問題,可以只在root application context初始化完成后調用邏輯代碼,其他的容器的初始化完成,則不做任何處理,修改后代碼