1. 程式人生 > 資訊 >貓超次日達:淘寶心選 20 寸鋁框旅行箱 189 元(減 160 元)

貓超次日達:淘寶心選 20 寸鋁框旅行箱 189 元(減 160 元)

@SpringBootConfiguration

@EnableAutoConfiguration

@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),

@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public

@interface SpringBootApplication{

}

======================

@SpringBootApplication
public class mainApplication {
public static void main(String[] args) {
SpringApplication.run(mainApplication.class,args);
}
}
1。
@SpringBootApplication
    mainAPPlication是一個配置類
2.ComponentScan
    指定掃描那些,其中有兩個自定義掃描器
3.@EnableAutoConfiguration
  3.1@AutoConfigurationPackage
     自動配置包
      @Import(AutoConfigurationPackages.Registrar
.class) //給容器中匯入一系列元件
      public @interface AutoConfigurationPackage {}
        Registrar中
          1.
registerBeanDefinitions//將指定包下的所有元件匯入容器中 位置@SpringBootApplication在mainApplication中所以找的是主  3.2@Import(AutoConfigurationImportSelector.class)
      利用getAutoConfigurationEntry(annotationMetadata);給容器中批量匯入一些元件{
        1.呼叫List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes)
            獲取到所有需要匯入到容器中的配置類
        2.利用工廠載入 Map<String, List<String>> loadSpringFactories(@Nullable ClassLoader classLoader)
            得到所有的元件
          2.1在
loadSpringFactories中查詢所有的META-INF/spring.factories(檔案中是寫死給容器的所有配置類)
            啟動載入所有配置
        }
        但是會按照按照條件裝配規則(@Conditional),最終會按需配置。

            SpringBoot預設會在底層配好所有的元件。但是如果使用者自己配置了以使用者的優先



    public @interface EnableAutoConfiguration {}

總結:

  • SpringBoot先載入所有的自動配置類 xxxxxAutoConfiguration
  • 每個自動配置類按照條件進行生效,預設都會繫結配置檔案指定的值。xxxxProperties裡面拿。xxxProperties和配置檔案進行了繫結
  • 生效的配置類就會給容器中裝配很多元件
  • 只要容器中有這些元件,相當於這些功能就有了
  • 定製化配置
  • 使用者直接自己@Bean替換底層的元件
  • 使用者去看這個元件是獲取的配置檔案什麼值就去修改。

xxxxxAutoConfiguration ---> 元件 ---> xxxxProperties裡面拿值 ----> application.properties