在我们所有的应用程序集成测试中,我们使用手动自动装配以下内容:
context = new ClassPathXmlApplicationContext(getConfigLocations());
context.getAutowireCapableBeanFactory().autowireBeanProperties(this, getAutowireMode(), true);
这样,所需的Spring bean会自动注入测试类(this)。
这很好用,但是在我的一个测试类中,我使我的类成为InitializingBean。
当我在我的bean中以这种方式自动装配时,afterPropertiesSet()
方法永远不会被触发,而在调试中我看到所有属性都被正确设置。
有人能解释我为什么吗?
答案 0 :(得分:2)
autowireBeanProperties()
仅自动装配属性,它不执行其他初始化步骤。
您可以使用AutowireCapableBeanFactory
的其他方法执行完整初始化,例如initializeBean()
。但是,在这种情况下,您似乎无法通过autowireMode
。因此,如果您确实需要自定义autowireMode
(即如果您未在bean中使用@Autowired
),则不清楚如何解决此问题。