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

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

时间:2017-04-18 22:13:48      阅读:2053      评论:0      收藏:0      [点我收藏+]

标签:init   技术   题解   list   csdn   没有   proc   接口   null   

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

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

以下是XML配置:

技术分享

以下是自己写的BeanPostProcessor类:

技术分享

以下是启动Tomcat后。反复载入了数据,调用了两次onApplicationEvent方法:

技术分享

蓝色部分中的:

技术分享

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

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

技术分享

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

问了度娘:尽管有方法,但试过以后还是没有解决问题。

方法一:

在onApplicationEvent()方法中加入推断,

技术分享==null,然后推断里面运行你要初始化的或者是缓存的代码。

方法二:

技术分享

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

方法三:

技术分享

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

终于临时还是没有解决这个问题。或许能够解决大家的这个问题。先写下来。


都过去一年了,编辑下。问题是配置文件里一个内容被载入了两次,须要使用<init-param>将其放在<bean>内部。

问题解决。


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

标签:init   技术   题解   list   csdn   没有   proc   接口   null   

原文地址:http://www.cnblogs.com/liguangsunls/p/6730545.html

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