如何使用Spring手动自动装配bean?

时间:2012-08-15 07:34:32

标签: java spring autowired

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

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

相关问题:

2 个答案:

答案 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注解的实例。