对于自定义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(按类型)。如何将其注入ApplicationContext
(或者我是否需要自定义ApplicationContext
)?
我不能使用FactoryBean
,因为逻辑对一个(或几个)bean来说并不特殊。我无法使用InstantiationAwareBeanPostProcessor
,因为它的postProcessBeforeInstantiation()
方法仅被调用。
答案 0 :(得分:1)
正如'spacetrucker'所建议的那样(参见问题的评论),我解决了这个问题。我将我的bean实例化/选择逻辑添加到我的自定义Scope
,并将构造函数注入BeanFactory
到此Scope
。