前面寫(xiě)過(guò)一篇文章芦鳍,提到了配置springboot監(jiān)聽(tīng)器嚷往,也能正常的監(jiān)聽(tīng)springboot啟動(dòng)。但是存在一個(gè)問(wèn)題柠衅,就是皮仁,如果想要在bean初始化的時(shí)候使用監(jiān)聽(tīng)器中獲取的配置的時(shí)候,這種方式不能實(shí)現(xiàn)。
想要實(shí)現(xiàn)在springboot啟動(dòng)后贷祈,bean初始化之前監(jiān)聽(tīng)趋急,需要做如下的改變:
改變一下監(jiān)聽(tīng)事件類(lèi)型即可
public class PropertyListener implements ApplicationListener<ApplicationPreparedEvent> {
...
}
只要實(shí)現(xiàn)的ApplicationPreparedEvent事件監(jiān)聽(tīng),就可以實(shí)現(xiàn)在springboot啟動(dòng)后势誊、bean初始化之前監(jiān)聽(tīng)呜达。
此時(shí),需要在SpringApplication中添加監(jiān)聽(tīng)器
SpringApplication springApplication =new SpringApplication(DemoApplication.class);
springApplication.addListeners(new PropertyListener());
springApplication.run(args);
這種方式有一個(gè)缺點(diǎn)粟耻,就是不能在單元測(cè)試中使用監(jiān)聽(tīng)器闻丑!不能在單元測(cè)試中使用監(jiān)聽(tīng)器!不能在單元測(cè)試中使用監(jiān)聽(tīng)器勋颖!
重要的事情說(shuō)三遍`挛恕!饭玲!