码迷,mamicode.com
首页 > 移动开发 > 详细

ApplicationListener接口中的onApplicationEvent被调用两次解决方案

时间:2014-08-28 22:44:16      阅读:436      评论:0      收藏:0      [点我收藏+]

标签:blog   http   os   io   ar   数据   2014   问题   cti   

Spring容器初始化完成后,调用BeanPostProcessor这个类,这个类实现ApplicationListener接口,重写onApplicationEvent方法,

方法中就是我们自己要在容器初始化完成后加载的数据或者缓存。

下面是XML配置:

bubuko.com,布布扣

下面是自己写的BeanPostProcessor类:

bubuko.com,布布扣

下面是启动Tomcat后,重复加载了数据,调用了两次onApplicationEvent方法:

bubuko.com,布布扣

蓝色部分中的:

bubuko.com,布布扣

Root WebApplicationContext和WebApplicationContext(spring-servlet)两个容器。

下面是初始化全国地区信息的时候加载了两次:

bubuko.com,布布扣

Returning JDBC Connection to DataSource前面已经加载了一次地区信息,然后又Fetching JDBC Connection from DataSource又加载了一次。

问了度娘:虽然有方法,但试过以后还是没有解决这个问题。

方法一:

在onApplicationEvent()方法中添加判断,

bubuko.com,布布扣==null,然后判断里面执行你要初始化的或者是缓存的代码。

方法二:

bubuko.com,布布扣

字符串值比较equals("Root WebApplicationContext")。

方法三:

bubuko.com,布布扣

在事件参数前面加上final,  final ContextRefreshedEvent event。

最终暂时还是没有解决问题,也许可以解决大家的这个问题,先写下来。


ApplicationListener接口中的onApplicationEvent被调用两次解决方案

标签:blog   http   os   io   ar   数据   2014   问题   cti   

原文地址:http://blog.csdn.net/ginkgo_leaf/article/details/38904945

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!