zoukankan      html  css  js  c++  java
  • 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>内部。

    问题解决。


  • 相关阅读:
    Makefile 文件格式
    带你深入理解传递參数
    LeetCode OJ Basic Calculator II
    emacs 为什么找不到运行程序?
    iOS Dev (51)加急审核
    POJ 1159 Palindrome
    9.9递归和动态规划(十二)——小鸡吃米
    c++操作当前窗体句柄
    [Python]计算闰年时候出现的and和or优先级的问题以及短路逻辑
    静态代理模式
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6730545.html
Copyright © 2011-2022 走看看