在作WEB項目時,常常在項目第一次啓動時利用WEB容器的監聽、Servlet加載初始化等切入點爲數據庫準備數據,這些初始化數據是系統開始運行前必須的數據,例如權限組、系統選項、默認管理員等等。可是項目若不是WEB工程,或者說還沒用到WEB層(例如單元測試),這時應如何方便地初始化數據呢? java
藉助Spring容器是個很好的解決方案。Spring框架提供了事件機制,而事件機制必須實現ApplicationListener監聽器,所以咱們只要編寫一個實現類實現該接口的onApplicationEvent方法,在方法體中檢測數據庫的初始化數據是否存在並選擇初始化之。 spring
步驟: 數據庫
一、實現ApplicationListener接口 框架
二、交給Spring管理 單元測試
三、ok! 測試
示例代碼: spa
package com.zjh.dao; code
xml
import javax.annotation.Resource; 接口
import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Repository;
@Repository//交給Spring管理,若是不是自動掃描加載bean的方式,則在xml裏配一個便可 public class InitData implements ApplicationListener {
@Resource TestDao testDao;//注入一個dao,能夠操控數據庫 public void onApplicationEvent(ApplicationEvent event) {
initArticleCategory();
} }
private void initArticleCategory(){
//檢測數據庫是否有初始化數據,若沒有則在此初始化數據
if(testDao.getCount(ArticleCategory.class)==0){
//將文章的分類數據初始化到數據庫
}
}
}
能夠在onApplicationEvent方法中執行任何數據初始化動做,這樣只要容器啓動,就會執行這裏的代碼。