使用場景:在實際項目中,我們通常希望web應用程序啟動(這里指spring IOC容器加載bean)成功后,進行初始化工作,比如:數據庫的加載、特定任務的檢查等。
實現過程:定義一個MyApplicationListener類,實現ApplicationListener<ApplicationEvent>接口。若是使用配置文件(springmvc.xml等)該類通常會被執行三次。為了解決這種問題,我定義了一個變量isStart,並默認初始值為false。
代碼如下:
@Controller
public class MyApplicationListener implements ApplicationListener<ApplicationEvent> {
//定義該變量主要是為了 防止業務代碼被執行三次,
private static boolean isStart = false;
@Override
public void onApplicationEvent(ApplicationEvent event) {
if (!isStart) {
//特定任務的業務代碼
System.out.println("這里進行初始化工作------");
isStart = true;
}
}
}
