如何以编程方式处理/清理MessageListener bean

时间:2012-07-15 11:01:07

标签: java spring spring-integration imdb

我正在使用Spring3.1(独立环境)

我通过实现MessageListener创建了MDB,它通过模板连接到主题。

这个bean范围是单例。

有时候我想要处理那个Listener Bean。当我说dispose时,我的意思是我希望ioc释放该资源并从容器中清除这个bean。(这最终会使这个bean停止监听消息并释放未使用的内存。)

  1. 我需要通过它的id用getBean(..)方法检索这个bean来执行它的处理。我听说使用getBean(..)会导致内存泄漏。我应该怎么做呢?

  2. 我是否应该为此目的使用单例范围或原型?

  3. 感谢, 射线。

1 个答案:

答案 0 :(得分:0)

我不确定你的意思是getBean()和内存泄漏但是......

如果要完全删除它,而不是仅仅停止它,可以在自己的“子”应用程序上下文中声明它。使主上下文成为父上下文,以便它可以在主上下文中引用bean(如果需要)。

/**
 * Create a new ClassPathXmlApplicationContext with the given parent,
 * loading the definitions from the given XML files and automatically
 * refreshing the context.
 * @param configLocations array of resource locations
 * @param parent the parent context
 * @throws BeansException if context creation failed
 */
public ClassPathXmlApplicationContext(String[] configLocations, ApplicationContext parent) throws BeansException {
    this(configLocations, true, parent);
}

如果要删除它;调用context.destroy()。