编写初始化操作类
实现接口ApplicationListener
,并重写public void onApplicationEvent(ApplicationEvent event) {}
可以在容器初始话的时候执行这个方法。
会存在一个问题,在web 项目中(spring mvc),系统会存在两个容器,一个是root application context ,另一个就是我们自己的 projectName-servlet context(作为root application context的子容器)。就会造成onApplicationEvent方法被执行两次。为了避免上面提到的问题,我们可以只在root application context初始化完成后调用逻辑代码,其他的容器的初始化完成,则不做任何处理,所以加入判断:if (event.getApplicationContext().getParent() == null){...}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package com.yzeng.init;
import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent;
public class ApplicationStartListener implements ApplicationListener<ContextRefreshedEvent>{
@Override public void onApplicationEvent(ContextRefreshedEvent event) { if (event.getApplicationContext().getParent() == null) { System.out.println("do something"); } }
}
|
编写配置类来实例化操作类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package com.yzeng.config;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;
import com.yzeng.init.ApplicationStartListener;
@Configuration public class InitConfig { @Bean public ApplicationStartListener applicationStartListener(){ return new ApplicationStartListener(); } }
|
启动SpringBoot项目
在入口类中运行项目,查看启动日志:
![日志](https://i.loli.net/2018/11/08/5be3cc1d6eb9c.png)