27

我有一个 bean B,我必须自己创建(使用)并且new B()它有注释。@Autowire@PostConstruct

如何让 Spring 从我的 bean 处理这些注释A

相关问题:

4

2 回答 2

45

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

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

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

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

于 2012-08-15T07:53:04.277 回答
1

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

@Autowired
private AutowireCapableBeanFactory beanFactory;

然后:

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

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

于 2020-12-25T10:14:38.697 回答