花门楼前见秋草,岂能贫贱相看老。这篇文章主要讲述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。
终于临时还是没有解决这个问题。或许能够解决大家的这个问题。先写下来。
都过去一年了,编辑下。问题是配置文件里一个内容被载入了两次,须要使用< init-param> 将其放在< bean> 内部。
问题解决。
【ApplicationListener接口中的onApplicationEvent被调用两次解决方式】
推荐阅读
- 安卓界面跳转
- android应用程序优化之布局优化
- activity安卓作业3月5号
- 团队合作之组队app的n(need)
- 在AndroidStudio中数据存储第三方数据管理Bmob的使用
- 浅谈android应用的版本号更新
- android之ExpandableListView
- Android 中的IPC机制
- android之TextWatcher的监听