如何注入自定义BeanFactory

时间:2017-04-28 11:27:09

标签: java spring spring-ioc

对于自定义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()方法仅被调用。

1 个答案:

答案 0 :(得分:1)

正如'spacetrucker'所建议的那样(参见问题的评论),我解决了这个问题。我将我的bean实例化/选择逻辑添加到我的自定义Scope,并将构造函数注入BeanFactory到此Scope