如何注入自定义 BeanFactory
How to inject a custom BeanFactory
对于自定义 Scope
(由于法律原因,我不能在此处 post)我需要一个自定义 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()
方法只被调用一次。
根据 'spacetrucker' 的建议(请参阅问题的评论),我解决问题的方式完全不同。我将我的 bean 实例化/选择逻辑添加到我的自定义 Scope
并通过构造函数将 BeanFactory
注入到此 Scope
.
对于自定义 Scope
(由于法律原因,我不能在此处 post)我需要一个自定义 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()
方法只被调用一次。
根据 'spacetrucker' 的建议(请参阅问题的评论),我解决问题的方式完全不同。我将我的 bean 实例化/选择逻辑添加到我的自定义 Scope
并通过构造函数将 BeanFactory
注入到此 Scope
.