spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
2015-07-23 23:07
609 查看
最近在做项目的时候遇到一个问题,就是在spring加载完所有bean的时候要获取所有AMQ消息队列的容器对象,从而可以实现方便地对其进行控制,比如运行某一个消息队列容器对象,使其开始消费AMQ消息。
问了下度娘,总体解决方案如下:
1、写一个类继承spring的ApplicationListener<ContextRefreshedEvent>监听,并监控ContextRefreshedEvent事件(容易初始化完成事件)
2、在XML配置一下上面的bean,或者直接使用@Component等注解
代码如下:
。。。。。。。待插入代码
但是这时候又遇到一个问题,就是发现ContextRefreshedEvent被触发了两次。查了下原因,原来项目中存在两个上下文环境,一个是root上下文环境,还有一个是非root上下文环境,为了防止重复初始化,所以在ContextRefreshedEvent事件代码中得加上以下的判断
问了下度娘,总体解决方案如下:
1、写一个类继承spring的ApplicationListener<ContextRefreshedEvent>监听,并监控ContextRefreshedEvent事件(容易初始化完成事件)
2、在XML配置一下上面的bean,或者直接使用@Component等注解
代码如下:
。。。。。。。待插入代码
但是这时候又遇到一个问题,就是发现ContextRefreshedEvent被触发了两次。查了下原因,原来项目中存在两个上下文环境,一个是root上下文环境,还有一个是非root上下文环境,为了防止重复初始化,所以在ContextRefreshedEvent事件代码中得加上以下的判断
if(context.getParent == null){ // 初始化代码.... }这样的话,只有是root上下文环境才会触发该事件。
相关文章推荐
- java RMI
- Java Beans
- java高精度
- Struts2的优化
- java中常用的字符串的截取方法 (2011-03-17 00:41:31)
- 关于javaEclipse链接MySQL数据库的几条语句
- Eclipse 快捷键大全
- eclipse代码自动补全
- CCF 窗口 Java实现
- Java Web学习【4】System
- java操作hbase例子
- servlet 使用spring管理bean
- Spring JdbcTemplate
- eclipse调试技巧
- java多线程编程(二)
- Java多线程总结
- 转: JAVA_SWT常用事件, 和方法
- 获取Java文件路径
- thinking in java ch2 notes
- java 参数 "..." 使用介绍