2017-09-08 3 views
0

私は、私のコンストラクタのvar args引数であるbeanを自動配線したいと思っています。Var args Autowire

どうすればいいですか?

Public class ServiceImpl implements Service{ 
    private Set<Rules> rules = new HashSet<Rules>(); 

    public ServiceImpl(Rules... args) { 
     for (Rules r : args) { 
      rules.add(r); 
     } 
    } 
    //... 
} 

を、私は以下のようにspring-config.xmlに注入しようとしている:ここで

は私がしようとしているコードです

<bean id = "check" class="ServiceImpl"> 
    <constructor-arg ref="notEmpty"></constructor-arg> 
    <constructor-arg ref="check"></constructor-arg> 
</bean> 

その私ができる方法はありますアノテーションを付けてこれを達成してください。constructor argsはここに渡されません。

答えて

0

はい、あなたはコンストラクタに@Autowiredを追加することができますし、IoCコンテナは、コンテキストに登録されているすべてのルールインスタンスに配線します注釈で:

@Component 
public class ServiceImpl implements Service{ 
private Set<Rules> rules = new HashSet<Rules>(); 

@Autowired 
public ServiceImpl(Rules... args) { 
    for (Rules r : args) { 
     rules.add(r); 
    } 
    } 

} 
+0

私はここで、いいえ予選豆の例外を取得していませんよある私の春-config.xmlの \t <コンテキスト:コンポーネント・スキャンベースパッケージ= "passwordcheck" /> \t \t \t <コンテキスト:アノテーションのconfig /> \t <豆 \t \tクラス= "org.springframework.web.servlet.view.InternalResourceViewResolver"> \t \t <プロパティ名= "接頭辞" 値= "/ WEB-INF/JSP /" /> \t \t <プロパティ名=」接尾辞 "value =" .jsp "/> \t – user8579908

+0

これは、コンテキストでルールの実装が見つからないことを意味します。アプリケーションコンテキスト(スキャンしているパッケージの@Componentで注釈が付けられているもの)に少なくとも1つのルールの具体的な実装があることを確認する必要があります。 – Chris

+0

ありがとうございました – user8579908

関連する問題