在使用SingletonBeanFactoryLocator
及其BeanFactoryReference
时,我发现当我在release
实例上调用BeanFactoryReference
时,上下文中的某些bean被破坏了,但有些仍然存在。我的假设是所有这些都将被销毁。
这样的结果是,下一次我将SingletonBeanFactoryLocator
和BeanFactoryReference
与相同的键一起使用时,不是获取全新的bean,而是从先前的上下文中获取了一些bean。我无法在此背后找到模式。这些bean是单例的,但其中一些是重新创建的,其中一些是在旧环境中进行的。为什么会这样呢?
例:
假设我在上下文中有A,B和C豆。全部为单例,B注入A,C注入B。
我得到BeanFactoryReference
,得到这些bean,然后释放BeanFactoryReference
。
然后我再次得到BeanFactoryReference
; Bean A和B是新的,但C来自旧上下文(我打印了它们的系统哈希码以进行检查)。
最佳答案
在春天这不是问题。它确实清除了所有的豆子。使用此代码的代码中出现了一个小故障,这使得某些bean似乎没有被销毁而是被重用了。