2012-01-05 15 views
1

注入する最初の目的のBeanに障害が発生した場合に、別のBeanを注入するように指定できますか?Springでの依存性インジェクションフェイルオーバー

Bean1、Bean2、Bean3があるとします。 Bean1にはBean2が必要ですが、何らかの理由でBean2を注入できない場合は、代わりにBean3を注入します。しかし、Bean1がコンテナから取得されるたびにBean3を注入しようとする前に常にBean2を注入しようとするべきです。これは可能ですか?そうでない場合、私の選択肢は何ですか?

+1

実際にどのような問題を解決しようとしていますか?この条件付き依存性注入は、おそらくよりよい解決策を有するものを解決する試みのように聞こえる。 –

+0

Bean2の注入が失敗する理由をお聞かせください。 –

+0

bean2は、注入される前に別のサーバーから検索されているBeanかもしれません。もちろん、そのサーバーがダウンしたときに失敗します。他にも理由があるかもしれません。 – supertonsky

答えて

1

私には問題がありません。通常の状況では、Beanを宣言的に注入するためにSpringが使用されています。だから@Don Robyが指摘したように、@Adrian Shumはあなたが解決しようとしている問題はSpringの問題ではない。

Springはサービスロケータのように動的に依存関係を解決するようには設計されていません。

+1

+1。サービス・ロケータとして使用するBeanを作成し、そのBeanに動的ルックアップ・ロジックを実行させます。 –

+0

@NathanHughes:良い提案! – Nilesh

+0

@Nilesh私が達成したいことは、物事を非宣言的にするとは思わない。実際には、サービスロケータを導入することで、宣言的ではありません。私は、その機能を提供するSpringに間違ったことは何も見ません。 AFAIK依存性注入は、サービスロケータを置き換えるために発明されましたか? – supertonsky

関連する問題