java - Spring 模糊构造函数
问题描述
我从事一个混合了 XML 和带注释的 bean 的大型遗留项目。在这个例子中,我想用 Mockito 创建一个模拟对象:
<bean id="f1" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg type="java.lang.Class" value="FireEngine"/>
</bean>
Mockito 有三个称为 mock() 的方法。我想要的一个将 Class 作为其唯一参数,其他 mock() 方法采用不适用于我的用例的附加参数。
当我尝试加载时,出现 Spring 错误:
Ignoring factory method [public static java.lang.Object
org.mockito.Mockito.mock(java.lang.Class, java.lang.String)] of bean "f1".
...
Ambiguous argument values for parameter of type [java.lang.String] - did you pass
the correct bean references as arguments.
是否可以告诉 Spring 使用的确切方法?我尝试将类型和索引添加到构造函数参数,但没有任何变化。我已经读过将@Autowire 添加到我有兴趣调用的方法中可以解决问题,但我无法使用第三方库来解决这个问题。
起作用的是创建我自己的包装 Mockito 的静态 Mock 工厂。它可以工作并且没问题,但我想知道是否有办法让 Spring 做正确的事情,因为我与其他工厂和构造函数有类似的问题。正如我所说,它是遗留代码,我不想添加很多包装器。
有许多关于 Spring 和模棱两可的构造函数的类似问题,但答案假设您可以注释您尝试构建的代码。这不是这里的情况。
解决方案
推荐阅读
- python-3.x - module 'pandas_datareader.data' has no attribute 'Datareader'
- algolia - 隐藏 ais-state-results 小部件的默认消息
- java - Map Object Array to a Bean
- java - Android Foreground Service onStartCommand doesn't invoke, only onCreate invokes
- reactjs - Axios - Interceptors not working on request error - 401 code
- c# - Using $in clause for insensitive search in mongo db driver c#
- php - How to fix embedded code in richeditor - octobercms
- angularjs - How to Inject Services into Directive Link Functions
- plot - 使用 Octave 5.1.0 绘图会导致线条中断
- c++ - SQL Server 2017 C++ ODBC 连接在 Linux 上不起作用