容器本体成果の拡張子は次のとおりです。
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。 } } }
参考:春のソース深さ分析