リフレッシュ();コンテナをリフレッシュ、プラスロック
)1 prepareRefreshを(;容器更新する準備ができて
1.1変性状態(リフレッシュ時間コンテナを、コンテナ、コンテナアクティブ状態閉)
1.2初期化プロパティリソース(サブクラスによって達成空の実装)
環境を初期化するために1.3資源(環境)、および必要なパラメータをチェック
1.4は、ブロードキャスト・コールの初期化後に、プッシュイベントを初期化する前に、イベントのアプリケーション放送(ApplicationEventMulticaster)を記録するため、早期に(earlyApplicationEvents)のイベントのセットを定義
2 obtainFreshBeanFactory();たBeanFactoryを取得
refreshBeanFactory 2.1()
たBeanFactory作成2.1.1
2.1.2リフレッシュ状態がリフレッシュ変更
2.1.3シリアル番号が提供
2.2戻ったBeanFactoryを
3 prepareBeanFactory(たBeanFactory);たBeanFactory初期化
3.1クラスローダが提供
3.2 SPEL式パーサー(SpelExpressionParser)に配置された
配置3.3リソースエディタ(ResourceEditorRegistrar)
3.4 ApplicationContextAwareProcessorビーンは、ビーンAwareのインターフェイスを処理するためのポストプロセッサを増加しました
EnvironmentAware環境データは、環境に関する情報の取得のために、と、
文字列式を処理するために表現パーサーEmbeddedValueResolverAwareを。例えば、「$ {spring.redis.port:6379}」
リソースデータ読み出し用ResourceLoaderAwareリソースローダ
プッシュイベント(ApplicationEvent)ためApplicationEventPublisherAwareアプリケーションイベントプッシャーを
国際化リソース獲得モジュールのためMessageSourceAware
ApplicationContextAware容器、容器を得るために
ポストプロセッサApplicationContextAwareProcessorされた3.5無視ビーン自動組立インターフェース、
3.6自動組立ルールビーン(対応関係)を提供し、アセンブリ豆中に提供クラスは、所望の
(beanFactory.registerResolvableDependencyを; ApplicationContext.class、この)
@Autowired容器、すなわちこの電流コンテナ注入:例えば
、専用のApplicationContextのApplicationContext
3.7ビーンポストプロセッサApplicationListenerDetector、ApplicationEventインタフェースの実装クラスを処理するために、これらのクラスは、容器とイベントブロードキャストに登録されて登録をリアクター
3.8登録ビーンポストプロセッサLoadTimeWeaverAwareProcessorに、クラス名前含まloadTimeWeaverは、治療豆LoadTimeWeaverAwareインターフェイスに使用され、一時的なクラスローダContextTypeMatchClassLoader設定されている場合
3.9登録血管ビーン(環境、systemProperties、systemEnvironment)を
。4 postProcessBeanFactory(たBeanFactory );たBeanFactoryポスト初期化イベント(実装するサブクラスの空の実装)
5 invokeBeanFactoryPostProcessors(たBeanFactory);たBeanFactoryの後処理を実行する。
注:たBeanFactory後処理2種類がありますBeanDefinitionRegistryPostProcessorとBeanFactoryPostProcessor
5.1 PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(たBeanFactoryが、 getBeanFactoryPostProcessors());
getBeanFactoryPostProcessors()は、手動でデフォルトで空たBeanFactoryポストプロセッサを注入します
プロセッサタイプがBeanDefinitionRegistryPostProcessor postProcessBeanDefinitionRegistry法(BeanDefinitionRegistryレジストリ)が行われた場合5.1.1たBeanFactory後処理手動注射を取得
5.1.2 BeanDefinitionRegistryPostProcessorが容器からポストプロセッサのすべてのタイプを取得し、PriorityOrdered-> Ordered-に従って> NonOrdered実行の順序
手動タイプを実行するため5.1.3ポスト注入BeanFactoryPostProcessorプロセッサ、postProcessBeanFactory(ConfigurableListableBeanFactoryたBeanFactory)メソッドを呼び出す
順序> 5.1.4 BeanFactoryPostProcessorが容器からポストプロセッサのすべてのタイプを取得し、PriorityOrdered-に従って- >実行順序はNonOrdered
クラスを手動たBeanFactoryポストプロセッサを登録することができるので、操作を繰り返すが、3.8ステップ、が再びloadTimeWeaverというクラス、任意のポストプロセッサはLoadTimeWeaverAwareProcessorを登録するかどうかを判断し、一時的に設定し、5.2クラスローダContextTypeMatchClassLoader
6 registerBeanPostProcessors(たBeanFactory);豆のポストレジスタ
6.1順序付きコンテナ、PriorityOrdered分類プロセッサからポストプロセッサBeanPostProcessorのすべてのタイプを取得し、内部、NonOrdered
応じPriorityOrdered-> Ordered-> NonOrdered->内部系列順に登録されたポストプロセッサビーン
6.2 Beanの再登録ポストプロセッサApplicationListenerDetectorは、最後に、最初の登録にプロセッサが3.7参照
7 initMessageSourceを();初期化国際資源クラス
messageSourceという名前の容器があるかどうかの7.1ビーンの解釈
場合、もしあれば、それを初期化するために、7.2をHierarchicalMessageSourceは、インターフェイスを実装し、親MessageSource親注入内部MessageSource得、存在しない
、7.3ない場合、初期化DelegatingMessageSourceを親MessageSourceの内部を設定するために、容器の春に注入
)8 initApplicationEventMulticaster(、アプリケーションの初期化イベントイベントのディスパッチのための放送局
8.1はapplicationEventMulticasterコンテナビーンが呼び出されるかどうかを決定するために
、それを初期化するために、任意の場合は、8.2を
SimpleApplicationEventMulticを初期化し、ない場合には8.3を ASTER、及び容器春に注入
9 onRefresh();(サブクラスのために達成するために空の実装)リフレッシュイベント
10 registerListenersは(); ApplicationListener登録
ステップ8で作成された、アプリケーションイベント放送局(ApplicationEventMulticaster)を取得10.1
順番にApplicationEventMulticasterに注入されるApplicationListenerの手動登録、取得10.2
順番にApplicationEventMulticasterに注入される全てApplicationListenerは、容器取得10.3
10.4取得した初期アプリケーションイベント収集ステップ1.4は、(前のイベントに容器を通して押さ場合、セットに格納される)定義されたローカル変数への最初のデータ・キャッシュ、およびNULLに設定されている割り当て、NULLがに割り当てられていますプッシュイベントを防ぐために、まだ(コレクションがNULLであるかどうかに基づいて判断)コレクションに格納されています。
ターンコールonApplicationEvent 10.5 ApplicationEventMulticaster ApplicationListener(Eイベント)インタフェース
11 finishBeanFactoryInitialization(たBeanFactory);豆のすべての非シングルトン初期遅延ローディング
容器に含まれている場合11.1 ConversionServiceを、のBeanFacotry ConversionServiceの設定値
11.2コンテナを表現パーサーを設けられていませんEmbeddedValueResolverAware、表現パーサーの初期化コンテナ、デフォルトStringValueResolver
11.3初期化ビーンLoadTimeWeaverAwareインターフェース
11.4空の一時的なクラスローダ、3.8と5.2の値が設定されます
configurationFrozen = trueを設定さ11.5凍結を、あなたは)getBeanNamesForTypeを(呼び出すときに、値を決定する、Ruoyi凍結はキャッシュ内の情報を取得します。
11.6シングルトン遅延読み込み豆の非初期化
すべての記述ビーン、ビーン通じ11.6.1サイクル非抽象、シングルトンであれば、非遅延読み込み、それが作成される
BeanのインタフェースFactoryBeanの実装している場合11.6.2を
11.6.2.1コールをgetBean ( "$" +のbeanName)メソッド
11.6.2.2 BeanのインターフェースとSmartFactoryBean isEagerInitを(実装するかどうかを決定する)がtrueを返す、getBean(のbeanName)への呼び出し
豆FactoryBeanのは、インタフェース実装していない場合11.6.3は
、コールgetBean(のbeanName)を、getBeanメソッドを実装しました後続の補助
ビーンコールインターフェースSmartInitializingSingleton afterSingletonsInstantiated()メソッドかどうかを確認するために、順次実施される場合、すべての非遅延シングルトンローディングが完了した初期化11.7後
12 finishRefresh();完全なリフレッシュ
12.1ライフサイクル初期化プロセッサLifecycleProcessor、コンテナの初期化中に存在する場合、そうでない場合は、デフォルトDefaultLifecycleProcessor設定
onRefreshの12.2通話LifecycleProcessor()メソッドを
12.3は、コンテナ完全リフレッシュイベントに推進
13 resetCommonCachesを();キャッシュのすべての種類を削除します