Java:spring:为什么AbstractBeanFactory不允许更改父BeanFactory?
我的要求是创建一个ApplicationContext链,其中一个AppContext引用另一个作为其父级。父级还扩展到AppContext的相应Java:spring:为什么AbstractBeanFactory不允许更改父BeanFactory?,java,spring,inversion-of-control,Java,Spring,Inversion Of Control,我的要求是创建一个ApplicationContext链,其中一个AppContext引用另一个作为其父级。父级还扩展到AppContext的相应DefaultListableBeanFactory,即上下文的DefaultListableBeanFactory引用父上下文的DefaultListableBeanFactory作为其父级。 这样做是为了可以从最底层的AppContext搜索位于链中任何上下文中的bean 此链是动态的,在顶部添加新的AppContext,可以从中间删除任何AppC
DefaultListableBeanFactory
,即上下文的DefaultListableBeanFactory
引用父上下文的DefaultListableBeanFactory
作为其父级。
这样做是为了可以从最底层的AppContext搜索位于链中任何上下文中的bean
此链是动态的,在顶部添加新的AppContext,可以从中间删除任何AppContext
但是,当我从中间删除AppContext并尝试更改DefaultListableBeanFactory
父关系时,会出现上述异常
如何在运行时更改工厂的父关系
谢谢,
当做
Vimal我相信母豆工厂是最终设计的,我认为这是合理的设计选择。用另一个替换它将导致许多不一致和不可预测的行为 若您对从父上下文注入的bean有依赖性,那个么若替换父上下文会发生什么?是否应该重新注入此依赖关系?如果是,那么原型bean呢,它们没有被跟踪?若不是,那个么来自父上下文的bean的范围会发生变化吗 Spring不允许部分刷新上下文,替换父上下文听起来像是在尝试这样的操作
如果您能更详细地解释您的问题,并举出一些例子,或许可以用建设性的建议来回答您的问题。我已经在另一个问题中解释了这个问题
class AbstractBeanFactory
public void setParentBeanFactory(BeanFactory parentBeanFactory) {
if (this.parentBeanFactory != null && this.parentBeanFactory != parentBeanFactory) {
throw new IllegalStateException("Already associated with parent BeanFactory: " + this.parentBeanFactory);
}
this.parentBeanFactory = parentBeanFactory;
}