免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/yj1499945/article/details/87087541
private void prepareContext(ConfigurableApplicationContext context, ConfigurableEnvironment environment, SpringApplicationRunListeners listeners, ApplicationArguments applicationArguments, Banner printedBanner) {
context.setEnvironment(environment);
this.postProcessApplicationContext(context);
this.applyInitializers(context);
listeners.contextPrepared(context);
if (this.logStartupInfo) {
this.logStartupInfo(context.getParent() == null);
this.logStartupProfileInfo(context);
}
context.getBeanFactory().registerSingleton("springApplicationArguments", applicationArguments);
if (printedBanner != null) {
context.getBeanFactory().registerSingleton("springBootBanner", printedBanner);
}
Set<Object> sources = this.getSources();
Assert.notEmpty(sources, "Sources must not be empty");
this.load(context, sources.toArray(new Object[sources.size()]));
listeners.contextLoaded(context);
}
環境を初期化するsetEnvironmentコンテキスト
postProcessApplicationContextコンテキストとResourceLoader ClassLoaderを設定します
spring.factoriesからいくつかのコンテキスト初期化子クラスファイルをapplyInitializers
# Application Context Initializers
org.springframework.context.ApplicationContextInitializer=\
org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer,\
org.springframework.boot.context.ContextIdApplicationContextInitializer,\
org.springframework.boot.context.config.DelegatingApplicationContextInitializer,\
org.springframework.boot.context.embedded.ServerPortInfoApplicationContextInitializer
- DelegatingApplicationContextInitializer:デリゲートプロパティから初期化処理を必要とApplicationContextの初期化代行処理は、属性は、コンマの複数のイニシャライザによって分離することができる、春環境をcontext.initializer.classes。
- ContextIdApplicationContextInitializer:ApplicationContextのにIDを設定します。これらは、環境の構成に配置されていない場合は、配置、spring.application.name、vcap.application.name、spring.config.nameの次の順序に従って設定も更なるだろう、デフォルトのプロファイルを表すために、「アプリケーション」を使用IDを、外出先に追加。
- ConfigurationWarningsApplicationContextInitializer:出力警告ログ情報。
- ServerPortInfoApplicationContextInitializer:埋め込まれたWebサービス・ポートを起動するトリガーを設定し、EmbeddedServletContainerInitializedEventイベントリスナーを追加します。ポートを介して開始を設定.port [ネームスペース]、ローカル属性空の場合ApplicationContextの名前空間名前空間の名前空間が指定され、属性はポートの設定をlocal.server.port示すために使用されます。
他のリスナーにイベントを配布しcontextPrepared
このメソッドは、主にコンテナに登録された起動クラスをロードしています。