Spring の ApplicationContext.getBean() の使用はアンチパターンとみなされますか?

Patricia Arquette
リリース: 2024-11-27 07:15:12
オリジナル
736 人が閲覧しました

Is Using Spring's ApplicationContext.getBean() Considered an Anti-Pattern?

Spring の ApplicationContext.getBean はなぜ悪いと考えられるのですか?

Spring の ApplicationContext.getBean() メソッドは、Bean にアクセスする便利な方法のように思えるかもしれません。しかし、それは一般的に悪い習慣であると考えられています。代わりに、依存関係注入を使用して制御反転 (IoC) の概念を採用することをお勧めします。

依存関係注入の委任

ApplicationContext.getBean() の呼び出しは違反です。使用側クラス内に Spring への依存関係を導入することで、IoC 原則を実現します。これにより、クラスの柔軟性が低下し、テストが困難になります。また、依存関係の実装を簡単に変更する機能も妨げられます。

依存関係の挿入の利点

依存関係の挿入には、次のような多くの利点があります。

  • クラスの分離: クラスは、クラスの取得方法にとらわれなくなります。
  • テスト容易性の向上: モックの依存関係をテスト用に簡単に挿入できます。
  • コードの簡素化: クラスは依存関係を気にせず、コアの責任に集中します。管理。

実装Spring

での依存関係の挿入 ApplicationContext.getBean() を呼び出す代わりに、依存関係を引数として受け取るメソッドを使用側クラスで宣言する必要があります。 Spring は、Bean 設定に基づいて適切な依存関係を自動的に挿入します。

サンプル設定

<bean>
ログイン後にコピー

ブートストラップ

main メソッドでは、次を使用してルート Bean "myApplication" を取得します。 ApplicationContext.getBean("myApplication")。このルート Bean は他のすべてのサービスに依存関係を持つ必要があり、他の場所で getBean() を呼び出す必要がなくなります。

結論

ApplicationContext.getBean() を回避すると、真の IoC が促進されます。 Spring を使用すると、柔軟でテスト可能、保守可能なコードが得られます。メソッド引数による依存性注入を採用すると、Spring は依存性を管理するという指定された役割を実行できるようになります。

以上がSpring の ApplicationContext.getBean() の使用はアンチパターンとみなされますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート