创建类型为java.io.File的bean时出错[不明确的构造函数参数类型]

时间:2011-09-06 23:18:03

标签: java spring file ambiguous

我有以下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参数,所以我不确定为什么这是不明确的。任何帮助表示赞赏。

2 个答案:

答案 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文件路径)非常密切