14
SpringのApplicationContext.getBeanが悪いと考えられるのはなぜですか?
私は一般的なSpringの質問をしました:Spring Beanを自動キャストし、Springの呼び出しApplicationContext.getBean()はできるだけ避けるべきであると複数の人に回答してもらいました。何故ですか? Springが作成するように構成したBeanに他にどのようにアクセスする必要がありますか? 私は非WebアプリケーションでSpringを使用しており、LiorHで説明されているように共有ApplicationContextオブジェクトにアクセスすることを計画していました。 修正 私は以下の答えを受け入れますが、ここでは、依存性注入とサービスロケータを使用することのメリットについて議論するMartin Fowlerによる別の見解を示します(これは、本質的にはwrappedを呼び出すのと同じApplicationContext.getBean()です)。 Fowler氏は、次のように述べています。「サービスロケータを使用すると、アプリケーションクラスはロケータへのメッセージによって明示的に[サービス]を要求します。注入を使用すると、明示的な要求はなく、サービスはアプリケーションクラスに表示されます。つまり、制御が反転します。制御の反転はフレームワークの一般的な機能ですが、代償を伴うものです。デバッグしようとすると、理解が難しくなり、問題が発生する傾向があります。そのため、全体としては、[制御の反転]は避けたいと思います。 ]私はそれを必要とする場合は除きます。これは、私はそれがより簡単な代替の上に自分自身を正当化するために必要だと思いばかりということ、それは悪いことだと言っているわけではありません。」