web-dev-qa-db-ja.com

Java.io.File型のBeanを作成するときにエラーが発生しました[コンストラクターの引数の型があいまいです]

私は次のSpringBean構成を持っています

  <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?

単一のStringパラメーターを持つJava.io.Fileのコンストラクターは1つしかないため、これがあいまいな理由はわかりません。助けていただければ幸いです。

14
cyber-monk

見つかりました このリンク 何が起こっているかを説明しています。 引数インデックスが指定されていない場合、springはタイプごとに引数を照合しますであることがわかります。この場合、springは私の単一のString引数を受け取り、それをJava.io.Fileコンストラクターに渡します。このコンストラクターは[〜#〜] two [〜#〜]文字列を受け取ります。これは、constructor-argインデックスを指定することで修正できます。

<bean id="fileBean" class="Java.io.File">
  <constructor-arg index="0"
                   type="Java.lang.String" 
                   value="$prop{file.path.property}" />    
</bean>
26
cyber-monk

ここでちょうど私の2セント:私は今日まったく同じ問題を抱えていました。 SpringがXML構成を読み取って、必要なすべてのBeanを生成できるかどうかを確認する単体テストがあります。間違ったXMLファイルを編集していたために失敗していました。ソース管理からの正しいバージョンではなく、Antビルドからの「dist」バージョンを編集していました。

教訓:これらのSpring例外メッセージを(XMLファイルパスを使用して)読んでください非常に密接に

4
kevinarpe