春依存性注入


依存性注入はSpring Frameworkの最も重要な機能です.クラスの依存性を外部から注入する設計パターンである.それはクラス間の緩やかな結合を保証します.
スプリングMVCアプリケーションでは、コントローラクラスはサービス層クラスの依存関係を持ち、サービス層クラスはDAO層クラスの依存関係を持ちます.クラスAがクラスBに依存するとする.

通常のコーディングでは、' new 'キーワードを使用してクラスBのオブジェクトを作成し、クラスBの必須メソッドを呼び出します.しかし、クラスAのクラスBのオブジェクトを渡すように指示することができます.依存性注入はこれを行います.クラスAはクラスBオブジェクトを必要とし、クラスAはクラスBのインスタンスを作成し、クラスAのインスタンスを生成します.上記の例では、Spring Frameworkにオブジェクトのコントロールを渡していることを確認できます.これはControl Inversion(IOC)と呼ばれるものです.
class ClassA {
  ClassB classB = new ClassB();

  int doCalculation() {
    return classB.calculate();
  }
}

ここでは@ autoワイヤードキーワード来る


❗春4.3以前に、コンストラクタに@ autowireアノテーションを追加しなければなりませんでした.新しいバージョンでは、クラスがコンストラクターだけを持っている場合、これはオプションです.
@ autowire注釈のおかげで、我々は値を注入することができます​​豆の中に別の豆にして、春に自分の値を維持しながらそれらを使用します.複数の方法が注入されますが、“プロパティベース”、“セッターベース”と“コンストラクタベース”の間では、“コンストラクタベース”の依存性注入から利益を得るために使用されます.あなたは、さらに詳細については、Googleとすることがあります違いを参照してください.

This is why we use constructor based injection "All required dependencies are available at initialization time"


コードプリーズ.


MyBeanToInjectのインスタンスは、MyServiceコンストラクタに対する引数として、Springによって注入されます.
public class MyService {
    private MyBeanToInject myBeanToInject;
    @Autowired
    public MyService(MyBeanToInject myBeanToInject) {
        this.myBeanToInject = myBeanToInject;
    }
}

まとめる🏁


長所
  • 依存性注入の基本的な利点は、クラスとその依存関係の結合を減少させることです.
  • その依存関係がどのように実装されているかのクライアントの知識を削除することによって、プログラムはより再利用可能で、テスト可能で、保守可能になります.
  • すべての依存性生成が特異的なコンポーネントによって扱われるので、依存性注入はBoilerplateコードを減らします
    短所
  • overuse管理問題やその他の問題を引き起こす可能性があります.
  • 多くのコンパイル時エラーがランタイム
  • に渡されます