我有一个要从Spring 3.1.2迁移到4.1.6的应用程序。交换版本后,由于错误的自动装配bean,导致多个测试用例失败。
我想自动连接我自己的BeanFactory实现。
public class DataModel extends AbstractDataModel
{
@Autowired
private BeanFactory beanFactory;
...
}
我的BeanFactory实现是从ApplicationContext(它实现BeanFactory)派生而来的:
public class MyApplicationContext implements ApplicationContext
{
...
}
我在application.xml中定义了bean:
<beans xmlns="http://www.springframework.org/schema/beans" ...>
<context:annotation-config />
<bean id="beanFactory" class="com.inxmail.xpro.server.MyApplicationContext">
</bean>
</beans>
但是现在在运行时,beanFactory的实例类型为DefaultListableBeanFactory而不是MyApplicationContext。在更改版本之前,实例的类型为MyApplicationContext。
请注意,这种初始化仅用于我们框架的单元测试目的。
还要注意,我试图缩短所有内容,只发布相关的代码片段。希望我没有忘记代码的重要部分。在这种情况下,请发布可能也相关的内容。
我已经在Spring文档,迁移指南和论坛中为我们进行了研究,但无法弄清楚可能是什么问题。
我假设在Spring的初始化过程中发生了一些更改,这会导致此错误。
如果有人可以给我一个提示,那将是一件很好的事。
问候
一月
最佳答案
感谢M. Deinum,我找到了解决方案。我把该豆标记为主要豆。因此正确的bean将被自动装配,并且我的测试类现在通过。
这是代码:
<beans xmlns="http://www.springframework.org/schema/beans" ...>
<context:annotation-config />
<bean id="beanFactory" class="com.inxmail.xpro.server.MyApplicationContext" primary="true">
</bean>
</beans>
不幸的是,我偶然发现了解决方案,并没有发现spring行为的变化。