SpringBoot2.xは自動的にTomcatの原則を設定するために構築されました

 SpringBootはどのように自動設定Tomcatの組み込み?

  どのように我々は、組み込みのTomcatのデフォルトのパラメータを変更しますか?

これら二つの質問では、我々は、組み込みの自動設定、原則としてTomcatのSpringBoot下で分析しました

私たちは、春・ブート自動構成-xx.RELEASE.jarパッケージに含まれていSpringBoot自動設定を知っています。

一方のSpringBootサポートサーブレットWebサーバの実装は、抽象モデリングありません。

 

サーブレットコンテナ型  WebServerのモデルインターフェイス WebServerの工場実装クラス
Tomcatの    TomcatWebServer     TomcatServletWebServerFactory
桟橋    JettyWebServer    JettyServletWebServerFactory
引き  UndertowWebServer  UndertowServletWebServerFactory

このコンセプトモデルに基づいて、Webアプリケーションの種類には、Springbootの用途はウェブは、インスタンスのWebサーバに対応する植物成分を形成するように言いました。Webコンポーネントは自動的にクラスServletWebServerFactoryAutoConfiguarationタスクが自動的に植物成分のWeb設定を生成するように構成され、工場から来ます。

    

@Configuration 
@AutoConfigureOrder( -2147483648 
@ConditionalOnClass({のServletRequest。クラス})
@ConditionalOnWebApplication(
    タイプ = Type.SERVLET 
@EnableConfigurationProperties({ServerProperties。クラス})
@import({ServletWebServerFactoryAutoConfiguration.BeanPostProcessorsRegistrar。クラス、EmbeddedTomcat。クラス、EmbeddedJetty 。クラス、EmbeddedUndertow。クラス})
 パブリック クラスServletWebServerFactoryAutoConfiguration {
     パブリックServletWebServerFactoryAutoConfiguration(){ 
    } 

    @Bean 
    公衆ServletWebServerFactoryCustomizer servletWebServerFactoryCustomizer(ServerProperties serverProperties){
         リターン 新しいServletWebServerFactoryCustomizer(serverProperties)。
    } 

    @Bean 
    @ConditionalOnClass( = { "org.apache.catalina.startup.Tomcat" } 
    パブリックTomcatServletWebServerFactoryCustomizer tomcatServletWebServerFactoryCustomizer(ServerProperties serverProperties){
         リターン 新しいTomcatServletWebServerFactoryCustomizer(serverProperties)を、
    } 

    パブリック 静的の クラス BeanPostProcessorsRegistrarの実装ImportBeanDefinitionRegistrar、BeanFactoryAware {
         プライベートConfigurableListableBeanFactoryたBeanFactory。

        パブリックBeanPostProcessorsRegistrar(){ 
        } 

        公共 ボイド setBeanFactory(たBeanFactoryたBeanFactory)はスローBeansException {
             場合(たBeanFactory のinstanceof ConfigurableListableBeanFactory){
                 この .beanFactory = (ConfigurableListableBeanFactory)たBeanFactory。
            } 

        } 

        公共 ボイドregisterBeanDefinitions(AnnotationMetadata importingClassMetadata、BeanDefinitionRegistryレジストリ){
             もしこれ!.beanFactory = ヌル){
                 この .registerSyntheticBeanIfMissing(レジストリ、 "webServerFactoryCustomizerBeanPostProcessor"、WebServerFactoryCustomizerBeanPostProcessor。クラス);
                この .registerSyntheticBeanIfMissing(レジストリ、 "errorPageRegistrarBeanPostProcessor"、ErrorPageRegistrarBeanPostProcessor。クラス); 
            } 
        } 

        プライベート 無効 registerSyntheticBeanIfMissing(BeanDefinitionRegistryレジストリ、文字列名、クラス<?> たbeanClass){
             場合(ObjectUtils.isEmpty(この .beanFactory.getBeanNamesForType(たbeanClass、))){ 
                RootBeanDefinition beanDefinition = 新しいRootBeanDefinition(たbeanClass)。
                beanDefinition.setSynthetic(真の); 
                registry.registerBeanDefinition(名前、beanDefinition)。
            } 

        } 
    } 
}

 このServletWebServerFactoryAutoConfigurationを初めて目には、自動的にいくつかの注意事項クラスを設定します。

条件2は、現在の動作環境は、Webサーブレットサービス標準に基づいていることを示していますConditionalOnClass(ServletRequest.class):現在はConditionalOnWebApplication(タイプ= Type.SERVLET)サーブレットAPIに依存し存在しなければならないことを示し:唯一のサーブレットベースのWebアプリケーション

 

このローディングシーケンス@AutoConfigureOrder 1は、決定されたアノテーションの設定クラス、小さい値であるときに第一負荷のアノテーション

2. @ EnableConfigurationProperties開いた構成属性値ServerPropertiesクラス。そして、これはWebサーバの設定が含まれているクラスがあります

内部クラスBeanPostProcessorsRegistrarは、このカテゴリは2つのBeanを登録3. @import:

    WebServerFactoryCustomizerBeanPostProcessorとErrorPageRegistarBeanPostProcess。この後に、より多くの豆との両方の役割

4. @インポートEmbeddedTomcatクラス

   

@Configuration 
    @ConditionalOnClass({サーブレット。クラス、のTomcat。クラス、UpgradeProtocol。クラス})
    @ConditionalOnMissingBean( = {ServletWebServerFactory。クラス}、
        検索 = SearchStrategy.CURRENT 
    パブリック 静的 クラスEmbeddedTomcat {
         パブリックEmbeddedTomcat(){ 
        } 

        @Bean 
        公衆TomcatServletWebServerFactory tomcatServletWebServerFactory(){
             リターン 新しいTomcatServletWebServerFactory()。
        }
    }

  このクラスは、関連のjarパッケージのtomcat TomcatServletWebServerFactory Beanの存在に追加されます  

また5、さらに注射

ServletWebServerFactoryCustomizer和TomcatServletWebServerFactoryCustomizer




 

おすすめ

転載: www.cnblogs.com/whx7762/p/12302983.html