ApplicationListener接口中的onApplicationEvent被调用两次解决方式
Spring容器初始化完毕后,调用BeanPostProcessor这个类,这个类实现ApplicationListener接口,重写onApplicationEvent方法,
方法中就是我们自己要在容器初始化完毕后载入的数据或者缓存。
以下是XML配置:
以下是自己写的BeanPostProcessor类:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ2lua2dvX2xlYWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
以下是启动Tomcat后。反复载入了数据,调用了两次onApplicationEvent方法:
蓝色部分中的:
Root WebApplicationContext和WebApplicationContext(spring-servlet)两个容器。
以下是初始化全国地区信息的时候载入了两次:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ2lua2dvX2xlYWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
Returning JDBC Connection to DataSource前面已经载入了一次地区信息,然后又Fetching JDBC Connection from DataSource又载入了一次。
问了度娘:尽管有方法,但试过以后还是没有解决问题。
方法一:
在onApplicationEvent()方法中加入推断,
==null,然后推断里面运行你要初始化的或者是缓存的代码。
方法二:
字符串值比較equals("Root WebApplicationContext")。
方法三:
在事件參数前面加上final, final ContextRefreshedEvent event。
终于临时还是没有解决这个问题。或许能够解决大家的这个问题。先写下来。
都过去一年了,编辑下。问题是配置文件里一个内容被载入了两次,须要使用<init-param>将其放在<bean>内部。
问题解决。
ApplicationListener接口中的onApplicationEvent被调用两次解决方式的更多相关文章
- 中文乱码在java中URLEncoder.encode方法要调用两次解决
中文乱码在java中URLEncoder.encode方法要调用两次解决 一.场景: 1.我在客户端要通过get方式调用服务器端的url,将中文参数做utf-8编码,需要在js中两次的进行编码,服务器 ...
- ListView+CheckBox两种解决方式及原因分析
近期在用ListView+CheckBox搞一个item选中的项目,我将CheckBox的focus设置为false,另我大喜的是,CheckBox居然能够选中(窃喜中),这么简单就搞定了,由于数据量 ...
- iOS长按手势调用两次解决方法
由于以前没有很细致的研究过长按手势,所以今天使用的时候发现长按手势会调用两次响应事件. 主要原因是长按手势会分别在UIGestureRecognizerStateBegan和UIGestureReco ...
- 在设置了android:parentActivityName后,点击子Activity返回键,父Activity总会调用OnDestroy()的解决方式
近期查了非常久这个事情.分享给大家, 原理非常easy,一个Activity在manifet里声明了android:parentActivityName:这时候通过Activity左上角的返回butt ...
- django种表单post出现CSRF verification failed( CSRF验证失败 ) 的两种解决方式
现象 表单界面例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29sbG9yNTI1/font/5a6L5L2T/fontsize/400/fi ...
- Spring ApplicationListener使用方法及二次调用问题解决
使用场景 在一些业务场景中,当容器初始化完成之后,需要处理一些操作,比如一些数据的加载.初始化缓存.特定任务的注册等等.这个时候我们就可以使用Spring提供的ApplicationListener来 ...
- Spring Task每次都会调用两次的问题
最近一个Spring Mvc的项目中需要定时执行一个任务,所以使用了spring 自带的Task功能.本地调试的时候一切都正常,可是部署到服务器上后,每次任务都会被调用两次.在网上搜索了相关的问题,排 ...
- spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法
在quartz中配置了一个方法运行时会连续调用两次,是因为加载两次,只需在tomcat的server.xml中修改配置 <Host name="www.xx.cn" appB ...
- 面试连环炮系列(十):一个线程调用两次start会怎么样
一个线程调用两次start会怎么样 Java的线程是不允许启动两次的,第二次调用必然会抛出IllegalThreadStateException,这是一种运行时异常. 谈谈线程的生命周期和状态转移 新 ...
随机推荐
- Cognos权限认证CJP方式之用户密码加密
在项目开发过程中,用户往往对系统的安全都有明确的要求,下面针对cognos门户认证用户密码如何加密来提供一个简单的wf 1Cognos权限认证方式:CJP 2Cognos用户数据库类型:Oracle ...
- Linq 使用注意
今天在使用Linq的时候,查询很慢.仔细查看在知道,在in的后面跟的是个方法,这个方法返回一个集合. Linq只是语法糖,内部进行了封装.内部的实现也是遍历集合,找到满足条件的元素. 在in的后面使用 ...
- redhat下安装mysql 5.6.20,解压zip包,查看已经安装过的mysql,卸载rpm安装包,安装mysqlserver端和client,改动mysqlusername,登陆mysql,启动关闭mysql
1 将相关的mysql rpm包上传到redhat上 2 我的电脑是Redhat 6.*版本号.所以这里使用上面一个 3 解压zip包 4 安装下面几个rpm MySQL-client-a ...
- Android Service+Socket 联网交互
android中,联网操作有http连接和socket连接两大类.由于项目需要,我们采取的是Socket连接.鉴于平时连接频繁,因此把Socket连接放到Service里,需要从服务器端获取数据时,只 ...
- ng-class
在前面Angularjs开发一些经验总结中我们说到在angular开发中angular controller never 包含DOM元素(html/css),在controller需要一个简单的POJ ...
- Bitmap尺度变换
Bitmap bitMap = BitmapFactory.decodeFile(path); int width = bitMap.getWidth(); int height = bitMap.g ...
- Android系统源代码学习步骤
目前,互联网行业正在朝着移动互联网方向强劲地发展,而移动互联网的发展离不开背后的移动平台的支撑.众所周知,如今在移动平台市场上,苹果的iOS.谷歌的Android和微软的Windows Phone系统 ...
- PHP-静态方法(static)继承等分析
<?php class A { const CONST_NAME = 'A'; public static $static_name = 'A'; public static $static_n ...
- spring.xml从外部文件引入数据库配置信息
<!-- 分散配置 --> <context:property-placeholder location="classpath:jdbc.properties" ...
- Windows下Python添加库(模块)路径
动态的添加库路径.在程序运行过程中修改sys.path的值,添加自己的库路径 import syssys.path.append(r'your_path') 在Python安装目录下的\Lib\sit ...