IOCコンテナの春を完了する方法については、[春]ソース

まず、全体的なアイデア

1、全体的なアイデア

 

2、抽象的アルゴリズム自分の考えを整理します

/ ** 
     *実ばねコンテナテンプレートをインスタンス化するための実質的アルゴリズムオブジェクト
     * @param A 
     * @return 
     * / 
    公共のCreateObject(クラスA){のオブジェクト
         // ステップ1:の種類に応じて型の取得インスタンス 
        オブジェクトO = したcreateInstance( A);
         // ステップ2:オブジェクトのすべてのプロパティがの種類に応じて移植されるように取得 
        一覧<クラス>クラス= getObjectByAutoWrite();
         IF (CollectionUtils.isEmpty(クラス)){
             // 無注入性、それが再帰的に終了
            リターンOを、
        } 
        // ステップ3は:オブジェクト依存関係のインスタンスを作成
        するための(クラスCLS:クラス){
             //コンテキスト、または容器からのグローバルオブジェクトは、そのオブジェクトがインスタンス化されるか否かが判断されます。【作成重複オブジェクトの問題を解決し、循環依存の問題] 
            オブジェクトO1 = isAlreadyCreateObject(CLS);
             IF(O1 == NULL ){ 
                O1 = CREATEOBJECTの(CLS); 
            } 
            // ステップ4:従属書き込み
            doAutoWriteを(O、O1 ); 
        } 
        戻りO; 
    } 


    / ** 
     *クラスのオブジェクトのインスタンスを作成する
     * 
     * @param 
     * @return * / パブリックオブジェクトのcreateInstance(クラスA){ 
        対象物体 = NULL ;
         試み{
     
    
            物体 = a.newInstance(); 
        } キャッチ(ないInstantiationExceptionがEである){ 
            e.printStackTrace(); 
        } キャッチ(IllegalAccessExceptionがE){ 
            e.printStackTrace(); 
        } 
        戻りオブジェクト; 
    } 

    / ** 
     *コンテキストから決定される、またはグローバルオブジェクト現在のクラスは、オブジェクトが作成されている場合
     、オブジェクトインスタンス戻り、既に作成され* 
     作成せず*、リターンヌル
     * 
     * @paramのA 
     * @return 
     * / 
    パブリックオブジェクトisAlreadyCreateObject(クラスA){
         戻り NULL ; 
    } 


    / **
     *現在のクラスは、オブジェクトの注入スプリングコレクション完了するために必要な取得する
     * 
     * @paramのA 
     * @return 
     * / 
    公共の一覧<クラス> getObjectByAutoWrite(クラスA){
         リターン ヌルを; 
    } 

    / ** 
     *書き込み依存
     * 
     * @param O依存していますオブジェクト
     * @param 従属オブジェクトに依存
      * / 
    公共 ボイドdoAutoWrite(オブジェクトOは、オブジェクトに依存){ 

    }
コードの表示

 

おすすめ

転載: www.cnblogs.com/shangxiaofei/p/12287593.html