gpt4 book ai didi

java - 从 Spring 3.1.2 迁移到 4.1.6 后,DefaultListableBeanFactory Autowiring ,而不是自己实现

转载 作者:太空宇宙 更新时间:2023-11-04 13:45:45 25 4
gpt4 key购买 nike

我有一个应用程序,正在从 Spring 3.1.2 迁移到 4.1.6。交换版本后,由于 Autowiring 的 bean 错误,多个测试用例失败。

我想 Autowiring 我自己的 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 标记为主要 bean。因此,正确的 bean 将被 Autowiring ,并且我的测试类现在通过了。

这是代码:

<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 行为变化的文档。

关于java - 从 Spring 3.1.2 迁移到 4.1.6 后,DefaultListableBeanFactory Autowiring ,而不是自己实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30867007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com