依存性注入(依存性注入、DI)と2つの観点から説明したものと同じ概念であるコントロールと同じ意味を逆。 Javaインスタンスの必要別のJavaインスタンスは、伝統的な方法は、(使用、たとえば発信者が発信者のインスタンスを作成するとき、新しいキーワード受信コーリー・インスタンス)が、Springフレームワークを使用した後、発信者の一例です発呼者によって作成されていないが、制御の反転として知られているSpringコンテナによって作成もはや。 発信者が依存性注入と呼ばれるSpringコンテナを介して被呼側のインスタンスを取得するために、発信者にインスタンス注入自動的に発信者のニーズを呼び出し元のインスタンスを作成するときにSpringコンテナオブジェクト。
依存性注入は、主に二つの方法、すなわち、プロパティセッター注入とコンストラクタインジェクションに実装されます。以下の詳細。 1 )プロパティセッター注入 IoCコンテナのインスタンスを使用して、セッターメソッドを注入する手段が依存しています。引数または無引数なしでコンストラクタを呼び出すことにより、静的豆のセッターメソッドを呼び出して、Beanをインスタンス化ファクトリメソッド、セッターは、DIに基づいて実現することができます。 2 )コンストラクタ注入が 依存しているコンストラクタIoCコンテナのインスタンスを使用して注入法を指します。DIコンストラクタは、それぞれの依存関係を表す、ベースコンストラクタパラメータを呼び出すことで実現しました。
場合によって、次のプロパティのセッター注入は、Springの依存性注入コンテナが達成される方法を示しています。具体的な手順は次の通りです。 1 インタフェースPersonServiceを作成し 、以下のようにcom.mengma.ioc springDemo01パッケージアイテムでPersonServiceと呼ばれるインタフェースを作成する、インターフェイスはaddPerson()メソッドを含みます。 パッケージcom.mengma.ioc、 パブリック インターフェイスPersonService { 公共 ボイドaddPerson(); }
2 。PersonServiceImplインタフェースクラスを作成し 、以下に示すようにPersonServiceに実装インタフェース、ことcom.mengma.iocパッケージでPersonServiceImplというクラスを作成します。 パッケージcom.mengma.ioc、 パブリック クラス PersonServiceImpl 実装PersonService { // インターフェース宣言の定義 プライベートPersonDao PersonDao; //は注入依存性のためにset()メソッドを提供 公共 ボイドsetPersonDao(PersonDao PersonDao){ この .personDao = PersonDaoを; } / / 実装方法PersonServiceインターフェース @Override 公共 ボイドaddPerson(){ personDao.add(); //PersonDaoは、add()メソッドを呼び出す のSystem.out.println( "addPersonを()が実行され..." ); } } personDaoオブジェクトを宣言することによって開始し、依存性注入のためのセッターメソッドを追加し、PersonDao実現しますaddPersonインターフェイス()メソッド、および保存過程で()メソッドおよび出力文を呼び出します。
3 。applicationContext.xmlを、構成情報を追加 applicationContext.xmlを、プロファイルを追加する <豆> :要素、PersonServiceImplクラスのインスタンス、インスタンス及びpersonService personDaoに注入し、コードの実現を以下に示す。 <ビーン= ID "PersonService" クラス = "com.mengma.ioc.PersonServiceImpl"> <! -インジェクションのPersonDao例でしょうPersonService例- > <プロパティ名= "PersonDao" REF = "PersonDao" /> </豆>
4 。ライティング試験方法は 次のように編集され、方法)(FirstTestにTEST2と呼ばれるクラスを作成する: @Test 公共 ボイドTEST2を(){ // 設定ファイルスプリングパスの定義 ストリングXMLPath =「applicationContext.xmlをします」。 // 初期化Springコンテナは、コンフィギュレーションファイルのロード のApplicationContextのApplicationContext = 新新ClassPathXmlApplicationContext( XMLPathを); // 取得PersonService例コンテナによる PersonService PersonService = (PersonService)ApplicationContextの .getBean( "PersonService" ); // addPerson PersonService()メソッドの呼び出し PersonService .addPerson(); }
5 。プロジェクトを実行し、結果を表示
JUnitテスト実行TEST2()メソッドを使用して、正常に実行した後、コンソール出力が示されています。
図から分かるように、使用スプリング後コンテナがUserServiceのインスタンスを取得し、インスタンスが追加PersonDao実装クラス()メソッドを呼び出し、その結果を出力するターンのどの方法でaddPerson()メソッドと呼ばれます。これは、より一般的な方法の実際の開発であるSpringコンテナプロパティのセッターインジェクションモデルです。