我有以下spring bean配置
<bean id="fileBean" class="java.io.File">
<constructor-arg type="java.lang.String"
value="$prop{file.path.property}" />
</bean>
我收到以下错误
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'fileBean' defined in class path resource [context.xml]:
Unsatisfied dependency expressed through constructor argument with index 0 of type
[java.net.URI]: Ambiguous constructor argument types - did you specify the correct
bean references as constructor arguments?
java.io.File只有一个构造函数,只有一个String参数,所以我不确定为什么这是不明确的。任何帮助表示赞赏。
答案 0 :(得分:26)
找到this link,解释发生了什么。事实证明,如果没有指定参数索引, spring将按类型匹配参数。在这种情况下,spring接受我的单个String参数并将其传递给带有 TWO 字符串的java.io.File构造函数。这可以通过指定constructor-arg索引来修复。
<bean id="fileBean" class="java.io.File">
<constructor-arg index="0"
type="java.lang.String"
value="$prop{file.path.property}" />
</bean>
答案 1 :(得分:4)
这里只有我的两分钱:今天我遇到了同样的问题。我有一个单元测试来检查Spring是否可以读取我的XML配置并生成所有必需的bean。它失败了,因为我正在编辑错误的XML文件。我正在编辑一个&#34; dist&#34;来自Ant构建的版本,而不是来自源代码管理的正确版本。
获得的经验:阅读那些Spring异常消息(使用XML文件路径)非常密切!