如何手动将豆子与Spring自动连接?

2022-09-01 15:33:31

我有一个豆子,我必须自己创建(使用),它有和注释。Bnew B()@Autowire@PostConstruct

我如何使Spring从我的豆子中处理这些注释?A

相关问题:


答案 1

Aaron,我相信你的代码是正确的,但我使用了以下内容:

B bean = new B();
AutowireCapableBeanFactory factory = applicationContext.getAutowireCapableBeanFactory();
factory.autowireBean( bean );
factory.initializeBean( bean, "bean" );

第一种方法将处理字段和方法(但不是经典属性)。第二种方法将调用后处理(以及任何定义的 s)。@Autowire@PostConstructBeanPostProcessor

如果 Bean 实现接口,则可以在 Bean 中获取应用程序上下文。ApplicationContextAware


答案 2

另一种选择是让 spring 容器自动创建新 Bean(而不是使用 new 关键字自行创建新实例)。在需要以编程方式实例化新 been 的类中,注入 AutowireCapableBeanFactory 的实例:

@Autowired
private AutowireCapableBeanFactory beanFactory;

然后:

B yourBean = beanFactory.createBean(B.class);

容器将像往常一样注入带有@Autowired注释的实例。


推荐