機能拡張春のコンテナ

容器本体成果の拡張子は次のとおりです。

org.springframework.context.support.AbstractApplicationContext.refresh()

    公共 のボイドの更新は、()スローBeansException、{IllegalStateExceptionが
         同期この.startupShutdownMonitor){
             //をリフレッシュコンテキストを作成し
             、// このコンテキストをリフレッシュするための準備をします。
            prepareRefresh(); 
            
            // たBeanFactoryを初期化し、XMLファイルを読み込む
             // 教えます。内部リフレッシュビーンファクトリーへサブクラス 
            ConfigurableListableBeanFactoryたBeanFactory = obtainFreshBeanFactory(); 

            // 様々な機能のためには、充填されたBeanFactory
             // この文脈で使用するためのビーンファクトリーを準備します。
            prepareBeanFactory(たBeanFactory); 

            試みは{
                 // サブクラスは、追加の処理メソッドをオーバーライド
                 // ビーンサブクラスの文脈においてandroid.permission後処理ファクトリー。
                postProcessBeanFactory(たBeanFactory); 

                // 起動種々たBeanFactoryプロセッサ
                 // 呼び出しプロセッサ登録ファクトリーAS内のコンテキストで豆。
                invokeBeanFactoryPostProcessors(たBeanFactory); 

                // 登録するだけで、時間、実際のコールgetBeanで、ここで登録し、作成した豆のプロセッサBeanを傍受
                 // 豆の作成を傍受登録豆のプロセッサ。
                registerBeanPostProcessors(たBeanFactory); 

                //メッセージ・コンテキストの初期化、異なる言語で、すなわち、メッセージボディ、国際プロセスのソース
                 // このコンテキストの初期化メッセージのソース。
                InitMessageSource(); 

                //は、アプリケーションメッセージ放送局を初期化し、そしてApplicationEventMulticasterに入れ
                 // このコンテキストの初期化イベントマルチキャスタ。
                initApplicationEventMulticaster(); 

                // 他のビーンを初期化サブクラス左
                 // 特定のコンテキストサブクラスの他の特別な豆を初期化する。
                OnRefresh(); 

                // 豆に登録されたすべてのリスナーのビーンを探すにメッセージ放送局に登録
                 / / リスナーBeanと登録彼らのためにチェックします。
                registerListeners(); 

                //(非遅延ロード)、残りの単一インスタンスの初期化
                 // すべての残りの(非レイジーINIT)シングルトンインスタンス化します。
                FinishBeanFactoryInitialization(たBeanFactoryを); 

                // 、フラッシュプロセスを完了通知処理をlifecycleProcessorリフレッシュサイクル寿命、また発行通知ContextRefreshEvent他人
                 // 最後のステップ:対応するイベントを公開します。
                finishRefresh(); 
            } 

            キャッチ(BeansException EX){
                 // リソースを避けるためにシングルトンを作成したダングリングした後、すでに破壊する。
                destroyBeans(); 

                // フラグにリセット'アクティブ'。
                cancelRefresh(EX); 

                / / 発信者に伝播例外。
                スロー EX。
            } 
        } 
    }

 

 

参考:春のソース深さ分析

 

おすすめ

転載: www.cnblogs.com/xkzhangsanx/p/11183912.html