现在需要监听IOC容器的加载完毕事件,继承了ApplicationListener,对ApplicationEvent的类型进行判断,如果是ContextRefreshedEvent就说明加载完毕。
但是实际使用时发现,项目中如果使用了Spring MVC,ContextRefreshedEvent会触发2次,1次是ApplicationContext.xml初始化完毕时,一次是mvc的IOC初始化容器完毕时,请问如何区分这2个事件?
------解决方案--------------------------------------------------------
这两个不好区分 。 它确实会出发两次ContextRefreshedEvent事件,如果你想监听的方法不要重复执行两次 ,可以用一个boolean变量来控制 , 如下:
- Java code
@Componentpublic class StartUpListener implements ApplicationListener<ApplicationEvent>{ public static boolean isStart = false; @Override public void onApplicationEvent(ApplicationEvent event) { if(isStart) return ; System.err.println("容器启动............"); isStart = true ; }}