使用autowireBeanProperties时,不会触发InitializingBean回调(这...)

时间:2012-09-14 10:52:59

标签: java spring inversion-of-control autowired

在我们所有的应用程序集成测试中,我们使用手动自动装配以下内容:

context = new ClassPathXmlApplicationContext(getConfigLocations());
context.getAutowireCapableBeanFactory().autowireBeanProperties(this, getAutowireMode(), true);

这样,所需的Spring bean会自动注入测试类(this)。

这很好用,但是在我的一个测试类中,我使我的类成为InitializingBean。 当我在我的bean中以这种方式自动装配时,afterPropertiesSet()方法永远不会被触发,而在调试中我看到所有属性都被正确设置。

有人能解释我为什么吗?

1 个答案:

答案 0 :(得分:2)

autowireBeanProperties()仅自动装配属性,它不执行其他初始化步骤。

您可以使用AutowireCapableBeanFactory的其他方法执行完整初始化,例如initializeBean()。但是,在这种情况下,您似乎无法通过autowireMode。因此,如果您确实需要自定义autowireMode(即如果您未在bean中使用@Autowired),则不清楚如何解决此问题。