对于自定义 Scope
(由于法律原因我不能在这里发布)我需要一个自定义 BeanFactory
来覆盖 getBean(Class requiredType)
方法,例如:
public class MyBeanFactory implements BeanFactory {
@Override
public <T> T getBean(Class<T> requiredType) throws BeansException {
if(MyScope.someSetting) {
return useBeanA();
} else {
return useBeanB();
}
}
}
这个 BeanFactory
必须在我的整个 spring 容器中用于获取 bean(按类型)。如何将它注入(inject) ApplicationContext
(或者我是否需要自定义 ApplicationContext
)?
我不能使用 FactoryBean
,因为逻辑对于一个(或几个)bean 来说并不特殊。我不能使用 InstantiationAwareBeanPostProcessor
,因为它的 postProcessBeforeInstantiation()
方法只被调用一次。
最佳答案
正如“spacetrucker”所建议的(参见问题的评论),我解决问题的方式完全不同。我将我的 bean 实例化/选择逻辑添加到我的自定义 Scope
并通过构造函数将 BeanFactory
注入(inject)到此 Scope
。
关于java - 如何注入(inject)自定义 BeanFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43679117/