在做WEB项目时,经常在项目第一次启动时利用WEB容器的监听、Servlet加载初始化等切入点为数据库准备数据,这些初始化数据是系统开始运行前必须的数据,例如权限组、系统选项、默认管理员等等。但是项目若不是WEB工程,或者说还没用到WEB层(例如单元测试),这时应如何方便地初始化数据呢?
借助Spring容器是个很好的解决方案。Spring框架提供了事件机制,而事件机制必须实现ApplicationListener监听器,因此我们只要编写一个实现类实现该接口的onApplicationEvent方法,在方法体中检测数据库的初始化数据是否存在并选择初始化之。
步骤:
1、实现ApplicationListener接口
2、交给Spring管理
3、ok!
示例代码:
package com.zjh.dao;
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方法中执行任何数据初始化动作,这样只要容器启动,就会执行这里的代码。