Spring:在手动创建的bean

时间:2016-05-27 09:30:02

标签: java spring

我手动自动装配一个不是由Spring创建的对象上的字段。我有2个自定义BeanPostProcessors也应该应用于此对象。然而,ObjectFactory似乎没有处理这个问题。我正在使用以下代码段:

ApplicationContext context = ...;
context.getAutowireCapableBeanFactory().autowireBean(this);

正确处理autowire字段,但此处未调用我的2个后处理器。

2 个答案:

答案 0 :(得分:0)

AutowireCapableBeanFactory.autowireBean对已经存在的bean进行自动装配,省略任何预处理或后处理。如果您需要,请改用AutowireCapableBeanFactory.autowire或AutowireCapableBeanFactory.createBean。

答案 1 :(得分:0)

普通BeanPostProcessor允许通过返回不同的对象来替换bean。对于现有对象,无法以有意义的方式实现此行为。我猜这就是为什么Spring选择在手动注射后不调用后处理器的原因。

检查自动装配代码我发现有一个名为InstantiationAwareBeanPostProcessor的扩展程序。它提供了额外的回调,也可以在手动自动装配后调用(例如postProcessAfterInstantiation)。