このプロセスは 2 つの部分で構成されます。 prepareContext + freshContext
1.
prepareContext 1.1 ロード メソッド、起動クラスを beanDefinition としてカプセル化し、bedefinitionMap に登録します。
2.
freshContext 2.1 invokeBeanFactoryPostProcessor
2.1.1 解析メソッド、起動クラスのアノテーションを再帰的にスキャンし、basePackage を決定します。 、コンポーネントのアノテーション変更をロードします。クラス
2.1.2 のスキャンと解析 @Import は、自動的にアセンブルする必要があるクラス情報をロードし、最終的に beanDefinitionMap に登録します。
ソースコードの最初の部分
メインメソッド: prepareContext –>load()
ソースコードの 2 番目の部分
メインメソッド:refreshContext()—>refresh()—>invokeBeanFactoryPostProcessors()—>parse()
すべての登録情報が準備されました、 // 残りの (非遅延初期化) シングルトンをすべてインスタンス化します。finishBeanFactoryInitialization(beanFactory);リフレッシュのメソッドは
、すべての非遅延ロード Bean リフレクションを作成します...
最後に、SpringBoot スタートアップ クラスのアノテーションを見てみましょう。