Spring Boot 注解

就 Spring Boot 啟動的 SpringBootApplication 進(jìn)行解釋。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
  • @SpringBootApplication

    組合了 @SpringBootConfiguration、@ComponentScan、@EnableAutoConfiguration,是 Spring Boot 項目的入口。

    • @SpringBootConfiguration

      等同于 @Configuration

      • @Configuration

        IOC 容器的配置標(biāo)簽,等同于 Spring 中 <bean></bean> 的配置,@Configuration 標(biāo)注的就是一個 JavaConfig 的配置類,注冊 bean 需要在方法上使用 @Bean 標(biāo)注

    • @EnableAutoConfiguration

      自動配置,通過 @Import 收集和注冊特定場景的 bean 定義。

      • @EnableAutoConfigurationImportSelector

        搜索服務(wù)條件的 @Configuration 配置,并加載到 Spring Boot 中,創(chuàng)建并使用 IOC 容器。

      • SpringFactoriesLoader.java

          protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
              List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());
              Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.");
              return configurations;
          }
      

      SpringFactoriesLoader 會加載 META-INF/spring.factories 配置文件,從而加載相應(yīng)類到 IOC 容器中

    • @ComponentScan

      自動掃描符合條件的組件,如 @Component、@Repository 等,也可以通過指定 basePackages 來更細(xì)粒度的定制掃描范圍。

    graph TD
    A[收集條件和回調(diào)接口 ApplicationIntializer/ApplicationListener] --step1 started--> B[準(zhǔn)備 Environment]
    B -- step2 environmentPrepared--> C[初始化 ApplicationContext 設(shè)置 Enviornment]
    C -- step3 contextPrepared contextLoaded --> D[refresh context 啟動完成]
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容