Spring启动后执行某些方法

  在spring的web项目中,如果我们需要初始化一些数据到内存,可以在spring容器启动之中初始化,也可以在spring容器启动完成后进行初始化,今天给大家介绍的是在spring容器启动之后进行初始化的方法。

  首先,你需要实现下面的接口:

public class MyDataInitial implements ApplicationListener<ContextRefreshedEvent> {
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
      //需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。
    }
}

  之后,你需要在spring容器的配置文件中配置你实现的类,将它配置成一个spring的bean。

  此时,如果是spring mvc的web项目会有一个问题,那就是spring mvc的配置文件也是spring的一个容器,它作为spring配置文件的子集,即此时存在两个spring容器,这会导致你的实现方法会执行两次,解决此问题的方法是:

public void onApplicationEvent(ContextRefreshedEvent event) {
    if(event.getApplicationContext().getParent() == null) {
       //需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。
    }            
}

至此,完成任务。多谢观看,不正之处,望指教!

posted @ 2016-04-07 09:10  gkaigk  阅读(730)  评论(0编辑  收藏  举报