Spring初始化完成后直接执行一个方法,初始化数据

     在做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方法中执行任何数据初始化动作,这样只要容器启动,就会执行这里的代码。

你可能感兴趣的:(Spring初始化完成后直接执行一个方法,初始化数据)