1. 程式人生 > 其它 >servlet請求響應物件,cookie&session

servlet請求響應物件,cookie&session

SprigBoot自動配置原理

簡要總結:

SpringBoot啟動的時候會通過@EnableAutoConfiguration註解找到META-INF/spring.factories配置檔案中的所有自動配置類,並對其進行載入,而這些自動配置類都是以AutoConfiguration結尾來命名的,它實際上就是一個JavaConfig形式的Spring容器配置類,它能通過以Properties結尾命名的類中取得在全域性配置檔案中配置的屬性如:server.port,而XxxxProperties類是通過@ConfigurationProperties註解與全域性配置檔案中對應的屬性進行繫結的。

自動配置流程

  • @SpringBootApplication
    • @SpringBootConfiguration ---表明這是一個配置類

      • @Configuration ---表明這是一個配置類
    • @EnableAutoConfiguration ---開啟自動配置

      • @AtuoConfigurationPackages ---指示包含註釋類的程式包應向AutoConfigurationPackages註冊。

        • @Import(AutoConfigurationPackages.Registrar.class) --->靜態內部類,用於儲存匯入的基本包
      • @Import(AutoConfigurationImportSelector.class) 重點

        selectImports(AnnotationMetadata annotationMetadata){
            ***
            AutoConfigurationEntry autoConfigurationEntry = getAutoConfigurationEntry(autoConfigurationMetadata,
        				annotationMetadata);
            ***
        }
        |
        |  呼叫
        V
        protected AutoConfigurationEntry getAutoConfigurationEntry(AutoConfigurationMetadata autoConfigurationMetadata,
        			AnnotationMetadata annotationMetadata) {
             ***
             List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);
             ***
         }
        |
        |  呼叫
        V
        protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
        	***
        	List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(),
        				getBeanClassLoader());
        	***
        }
        
        
    • @ComponentScan --->掃描當前類所在包及其子包