我手动自动装配一个不是由Spring创建的对象上的字段。我有2个自定义BeanPostProcessors
也应该应用于此对象。然而,ObjectFactory似乎没有处理这个问题。我正在使用以下代码段:
ApplicationContext context = ...;
context.getAutowireCapableBeanFactory().autowireBean(this);
正确处理autowire字段,但此处未调用我的2个后处理器。
答案 0 :(得分:0)
AutowireCapableBeanFactory.autowireBean
对已经存在的bean进行自动装配,省略任何预处理或后处理。如果您需要,请改用AutowireCapableBeanFactory.autowire
或AutowireCapableBeanFactory.createBean。
答案 1 :(得分:0)
普通BeanPostProcessor
允许通过返回不同的对象来替换bean。对于现有对象,无法以有意义的方式实现此行为。我猜这就是为什么Spring选择在手动注射后不调用后处理器的原因。
检查自动装配代码我发现有一个名为InstantiationAwareBeanPostProcessor
的扩展程序。它提供了额外的回调,也可以在手动自动装配后调用(例如postProcessAfterInstantiation
)。