首页 > 代码库 > ApplicationListener接口中的onApplicationEvent被调用两次解决方案
ApplicationListener接口中的onApplicationEvent被调用两次解决方案
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。
最终暂时还是没有解决问题,也许可以解决大家的这个问题,先写下来。
ApplicationListener接口中的onApplicationEvent被调用两次解决方案
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。