当前位置: 代码迷 >> Java Web开发 >> 怎么在区分spring的IOC容器和spring MVC的IOC容器的ContextRefreshedEvent
  详细解决方案

怎么在区分spring的IOC容器和spring MVC的IOC容器的ContextRefreshedEvent

热度:7610   发布时间:2013-02-25 21:19:28.0
如何在区分spring的IOC容器和spring MVC的IOC容器的ContextRefreshedEvent?
现在需要监听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 ;    }}
  相关解决方案