我正在使用Spring3.1(独立环境)
我通过实现MessageListener创建了MDB,它通过模板连接到主题。
这个bean范围是单例。
有时候我想要处理那个Listener Bean。当我说dispose时,我的意思是我希望ioc释放该资源并从容器中清除这个bean。(这最终会使这个bean停止监听消息并释放未使用的内存。)
我需要通过它的id用getBean(..)方法检索这个bean来执行它的处理。我听说使用getBean(..)会导致内存泄漏。我应该怎么做呢?
我是否应该为此目的使用单例范围或原型?
感谢, 射线。
答案 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()。