呉ユーキション - 自然JAVA SPRINGの研究ノートの開発のための自然なフレームワーク:春のDI(依存性注入)の実装と構成が注入、注射属性

依存性注入(依存性注入、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コンテナプロパティのセッターインジェクションモデルです。

 

おすすめ

転載: www.cnblogs.com/tszr/p/12128886.html