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容器初始化完成后就会执行该方法。 } }
至此,完成任务。多谢观看,不正之处,望指教!