在使用SingletonBeanFactoryLocator及其BeanFactoryReference时,我发现当我在release实例上调用BeanFactoryReference时,上下文中的某些bean被破坏了,但有些仍然存在。我的假设是所有这些都将被销毁。

这样的结果是,下一次我将SingletonBeanFactoryLocatorBeanFactoryReference与相同的键一起使用时,不是获取全新的bean,而是从先前的上下文中获取了一些bean。我无法在此背后找到模式。这些bean是单例的,但其中一些是重新创建的,其中一些是在旧环境中进行的。为什么会这样呢?

例:
假设我在上下文中有A,B和C豆。全部为单例,B注入A,C注入B。

我得到BeanFactoryReference,得到这些bean,然后释放BeanFactoryReference

然后我再次得到BeanFactoryReference; Bean A和B是新的,但C来自旧上下文(我打印了它们的系统哈希码以进行检查)。

最佳答案

在春天这不是问题。它确实清除了所有的豆子。使用此代码的代码中出现了一个小故障,这使得某些bean似乎没有被销毁而是被重用了。

07-26 09:33