我有一个bean B
我必须自己创建(使用new B()
)并且有@Autowire
和@PostConstruct
注释。
如何让Spring从我的bean A
处理这些注释?
相关问题:
答案 0 :(得分:37)
Aaron,我相信你的代码是正确的,但我使用了以下内容:
B bean = new B();
AutowireCapableBeanFactory factory = applicationContext.getAutowireCapableBeanFactory();
factory.autowireBean( bean );
factory.initializeBean( bean, "bean" );
第一种方法将处理@Autowire
字段和方法(但不是经典属性)。第二种方法将调用后处理(@PostConstruct
和任何已定义的BeanPostProcessor
)。
如果实现ApplicationContextAware
接口,则可以在bean中获取应用程序上下文。
答案 1 :(得分:1)
另一个选择是让 spring 容器自动创建一个新的 bean(而不是自己用 new 关键字创建一个新实例)。 在需要以编程方式实例化一个 new 的类中,注入一个实例 AutowireCapableBeanFactory :
@Autowired
private AutowireCapableBeanFactory beanFactory;
那么:
B yourBean = beanFactory.createBean(B.class);
容器会像往常一样注入带有@Autowired注解的实例。