環境を準備する春のブートプロセス

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。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

このメソッドは、主にコンテナに登録された起動クラスをロードしています。

 

 

おすすめ

転載: blog.csdn.net/yj1499945/article/details/87087541