BeanFactoryAware VS。 @Autowired - 自动装配 BeanFactory 是个坏主意吗?

BeanFactoryAware VS. @Autowired - is autowiring BeanFactory a bad idea?

或者,以不同的方式 - 使用自动装配更好:

@Autowired
private BeanFactory beanFactory;

或实施BeanFactoryAware:

@Configuration
public class MyConfigurationClass implements BeanFactoryAware {

    private BeanFactory beanFactory;

    @Override
    public void setBeanFactory(final BeanFactory beanFactory) throws BeansException {
        this.beanFactory = beanFactory;
    }
}

有什么不同吗(除了设置 BeanFactory 实例的阶段)?

想象一下以下情况: 您在上下文中有两个 BeanFactory,其中一个 BeanFactory 具有 @Primary-注释。

并假设第二个 BeanFactory(没有 @Primary-注释)创建了 class.

的实例

在这种情况下你会有不同:

第一种会@Autowire @Primary-注解的 BeanFactory,第二种会连接创建实例的 BeanFactory。