Java 如何注入自定义BeanFactory

Java 如何注入自定义BeanFactory,java,spring,spring-ioc,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(My

对于自定义的
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();
        }
    }
}
公共类MyBeanFactory实现BeanFactory{
@凌驾
公共T getBean(类requiredType)抛出BeansException{
if(MyScope.someSetting){
返回useBeanA();
}否则{
返回useBeanB();
}
}
}
这个
BeanFactory
必须在我的整个spring容器中使用,以获取bean(按类型)。如何将其注入
ApplicationContext
(或者我需要自定义
ApplicationContext
)中


我不能使用
FactoryBean
,因为该逻辑不是一个(或几个)bean所特有的。我不能使用
实例化WarebeanPostProcessor
,因为它的
postProcessBeforeInstantiation()
方法只调用一次。

正如“spacetrucker”(参见问题的注释)所建议的那样,我解决了完全不同的问题。我将我的bean实例化/选择逻辑添加到我的自定义
范围
,并由构造函数向这个
范围
注入一个
BeanFactory

,这不是应该只由bean的范围来处理的事情吗?所以,如果您的问题真的是将一个作用域应用于所有bean,而不是普通的单例作用域,那么最好看看您是如何实现这一点的。您正在使用什么类型的应用程序上下文,或者它必须是一个通用解决方案?我的自定义范围仅应用于某些bean,而不是所有bean。这就是为什么我需要对实例化/选择逻辑进行一些修改。我正在使用
注释ConfigWebApplicationContex
,但是您的自定义范围不能只做您当前在
MyBeanFactory.getBean
中用自己的方法
MyCustomScope.get(String,ObjectFactory)
实现的事情吗?谢谢。我现在明白你的意思了。我将尝试一下……目前我只调用
objectFactory.getObject()
,不幸的是,这是
objectFactory
的唯一方法。我可以将它转换到
BeanFactory
以获得其他bean,但我不确定,这是否是一个好主意?