2016-10-26 15 views
0

私はWebApplicationInitializerでSpring 4を構成しました。 Item1ServiceItem2Serviceの2つのサービスがあります。Spring4のキーに基づいてBeanを取得するAnnotationbased

しかし、コントローラでは、ユーザーが提供するキーに基づいて1つのサービスを見つける必要があります。 xmlベースの設定があった場合、idで取得できます。

しかし、どのようにしてAnnotationConfigWebApplicationContextオブジェクトをコントローラに入れることができるので、キーに基づいてBeanを取得できます。私は親切に私を助け @Service(value="item1")

@Service(value="item2")を使用していた

この

+0

そして、そこXMLとJavaの設定の違いはありません...それは同じ 'getBean'メソッドを持つ' ApplicatinContext'です...だから、なぜうまくいかないのでしょうか? –

答えて

1

(あなたが検索を実行しているどこか)あなたは、あなたのコントローラーにあなたのアプリケーションコンテキストをautowireすることができるはずのことができますようにユーザーが入力したどんな入力でもgetBeanメソッドを呼び出します。あなたの方法で、その後

@Autowired 
private ApplicationContext appContext; 

は:

MyService s = appContext.getBean(input); 
0

それはあなたの中から選択しなければならないの実装の唯一のカップルの場合は、1つのより多くのオプションがあります。コントローラー内のすべてのサービスを自動配線し、実行時にキーに基づいて切り替えます。 (注:私はサービスの実装数が3を超える場合、それはあなたのコードが読めなくなりますだけでなく、それが不必要にコントローラにサービス参照変数を作成し、これを好むはありません)

@Autowired @Qualifier("item1") 
    ItemService item1Service; 

@Autowired @Qualifier("item2") 
    ItemService item2Service; 
関連する問題