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>内部。

问题解决。

时间: 2025-01-14 11:19:56

ApplicationListener接口中的onApplicationEvent被调用两次解决方式的相关文章

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

Spring容器初始化完成后,调用BeanPostProcessor这个类,这个类实现ApplicationListener接口,重写onApplicationEvent方法, 方法中就是我们自己要在容器初始化完成后加载的数据或者缓存. 下面是XML配置: 下面是自己写的BeanPostProcessor类: 下面是启动Tomcat后,重复加载了数据,调用了两次onApplicationEvent方法: 蓝色部分中的: Root WebApplicationContext和WebApplicat

ListView+CheckBox两种解决方式及原因分析

近期在用ListView+CheckBox搞一个item选中的项目,我将CheckBox的focus设置为false,另我大喜的是,CheckBox居然能够选中(窃喜中),这么简单就搞定了,由于数据量较小,也没有发现什么问题. 后来数据多了. 页面须要滑动了, 发现了一个奇怪的问题,前面明明选中了,而再次滑动回去的时候居然变成未选中状态! 这是我刚開始写的那段错误的代码: @Override public View getView(int position, View convertView,

iOS长按手势调用两次解决方法

由于以前没有很细致的研究过长按手势,所以今天使用的时候发现长按手势会调用两次响应事件. 主要原因是长按手势会分别在UIGestureRecognizerStateBegan和UIGestureRecognizerStateEnded状态时调用响应函数 这时就需要在响应事件中增加手势状态的判断,根据具体的应用情况在相应的状态中执行操作. typedefNS_ENUM(NSInteger, UIGestureRecognizerState) { UIGestureRecognizerStatePos

jsp中Get方式请求参数乱码的两种解决方式

第一种方式: <% //获取请求包含的下旬字符串 String rawQueryStr=request.getQueryString(); //使用URLDecoder解码祖父穿 String queryStr=URLDecoder.decode(rawQueryStr, "UTF-8"); //以&符号分解查询字符串 String paramPairs[]=queryStr.split("&"); for(String paramPair:p

java.lang.IllegalArgumentException: pointerIndex out of range两种解决办法

java.lang.IllegalArgumentException: pointerIndex out of range 在做拍摄海报功能的时候需要拍摄界面的surface进行手势缩放,做多点触控放大缩小,操作时发生这个异常,如果是操作图片的放大缩小多点触控不会出现这个错误,这个bug是Android系统原因此处给出两种解决方式: 第一种方式是: 修改frameworks\base\core\jni\android_view_MotionEvent.cpp的android_view_Motio

Spring Task每次都会调用两次的问题

最近一个Spring Mvc的项目中需要定时执行一个任务,所以使用了spring 自带的Task功能.本地调试的时候一切都正常,可是部署到服务器上后,每次任务都会被调用两次.在网上搜索了相关的问题,排除了注解重复的问题后,发现是Tomcat配置项目时,把项目放在了webapp目录,且在server.xml配置文件中配置了docbase="项目路径"使容器被初始化两次造成的,最后把项目移出webapp目录,在docBase中指定路径的方式解决此问题.

spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法

在quartz中配置了一个方法运行时会连续调用两次,是因为加载两次,只需在tomcat的server.xml中修改配置 <Host name="www.xx.cn" appBase="" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="webapps/demo" reloadable=&quo

自制Javascript分页插件,支持AJAX加载和URL带参跳转两种初始化方式,可用于同一页面的多个分页和不同页面的调用

闲话部分 最近闲着实在无聊,就做了点小东西练练手,由于原来一直在用AspNetPager进行分页,而且也进行了深度的定制与原有系统整合的也不错,不过毕竟是用别人的,想着看自己能试着做出来不能,后台的分页插件已经有比较成熟的了,那就自己试着写一个前台分页吧. 话不多说,先上效果图: 优点与缺点 来说说优缺点吧,首先AspNetPager是后台分页控件,所以在向客户端回传HTML文档之前生成HTML阶段 就会把分页代码生成完毕,然后回传,而JS是前端代码,就是HTML文档在服务器组织完毕往客户端传送

Java多线程的两种实现方式:继承Thread类 &amp; 实现Runable接口

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! 创建和启动线程的两种传统方式: Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法.