2017-09-28 4 views
0

私は3つのテキストファイルを持っています、それらはすべて同じタイプのデータを含んでいますが、データは各ファイルに異なって保存されます。プリミティブ型の依存関係注入を持つリポジトリをどのようにautowireするのですか?

私は1つのインターフェイスがしたい:

public interface ItemRepository() { 
    List<Item> getItems(); 
} 

、代わりに私は1つの実装を作成し、各テキストのテキストファイル とアナライザクラスへのパスを注入する依存性注入を使用したい3つの実装を作成しますファイル:

すべてを配線し、ItemRepositoryImplをコントローラに挿入するにはどうすればよいですか?

私は単純に行うことができます知っている:

@Controller 
public class ItemController { 

    @RequestMapping("/items1") 
    public List<Item> getItems1() { 
     ItemRepository itemRepository = new ItemRepositoryImpl(new Analyser1(), "file1.txt"); 
     return itemRepository.getItems(); 
    } 

    @RequestMapping("/items2") 
    public List<Item> getItems1() { 
     ItemRepository itemRepository = new ItemRepositoryImpl(new Analyser2(), "file2.txt"); 
     return itemRepository.getItems(); 
    } 

    @RequestMapping("/items3") 
    public List<Item> getItems1() { 
     ItemRepository itemRepository = new ItemRepositoryImpl(new Analyser3(), "file3.txt"); 
     return itemRepository.getItems(); 
    } 

} 

しかし、私はそれをautowireする春を設定する方法がわかりません。

答えて

1

これはさまざまな方法で実現できますが、おそらくデザインによって異なります。

これらのうちの1つは、Springコンテキストで3つの異なるアナライザを初期化し、 '@Qualifier'アノテーションを使用してItemRepositoryImpl内の3つのアナライザすべてを配線することができます。余分なメソッドパラメータの助けを借りて、ItemRepositoryImplはどのアナライザにリクエストをルーティングするかを決定できます。

パス変数についても同様の方法で対応できます。

プリミティブ型をBeanに配線する方法について質問がある場合は、postにチェックを入れてください。 SpringコンテキストでString変数を初期化する方法を指定します。

関連する問題