java - 如何注入(inject)自定义 BeanFactory

标签 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(按类型)。如何将它注入(inject) ApplicationContext(或者我是否需要自定义 ApplicationContext)?

我不能使用 FactoryBean,因为逻辑对于一个(或几个)bean 来说并不特殊。我不能使用 InstantiationAwareBeanPostProcessor,因为它的 postProcessBeforeInstantiation() 方法只被调用一次。

最佳答案

正如“spacetrucker”所建议的(参见问题的评论),我解决问题的方式完全不同。我将我的 bean 实例化/选择逻辑添加到我的自定义 Scope 并通过构造函数将 BeanFactory 注入(inject)到此 Scope

关于java - 如何注入(inject)自定义 BeanFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43679117/

相关文章:

Java- 如何刷新 JPanel 窗口

java - 测试时忽略 Spring Controller 上的 PreAuthorize 注释

spring - 如何在 Controller 中使用 session 范围组件

java - 尽管使用 @Primary,但两个同名的 bean 会导致 ConflictingBeanDefinitionException

java - 如何实现一个在原型(prototype)上调用 destroy 方法的 bean 后处理器?

java - 如何检查 Android MediaPlayer 是否正在播放音频?

java - LayoutInflater Factory 和 Factory 2 有什么区别

java - Google DataStore - 批量保存争用过多

spring - 覆盖所有存储库的 spring 存储库删除方法的有效方法

java - 如何在 Spring Boot 之上编写框架(即编写 Spring Boot 应用程序而不实现某些接口(interface))