美文网首页
Spring Boot 注解

Spring Boot 注解

作者: 起司猫_0e99 | 来源:发表于2018-06-05 22:35 被阅读0次

    就 Spring Boot 启动的 SpringBootApplication 进行解释。

    @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 容器的配置标签,等同于 Spring 中 <bean></bean> 的配置,@Configuration 标注的就是一个 JavaConfig 的配置类,注册 bean 需要在方法上使用 @Bean 标注

      • @EnableAutoConfiguration

        自动配置,通过 @Import 收集和注册特定场景的 bean 定义。

        • @EnableAutoConfigurationImportSelector

          搜索服务条件的 @Configuration 配置,并加载到 Spring Boot 中,创建并使用 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 配置文件,从而加载相应类到 IOC 容器中

      • @ComponentScan

        自动扫描符合条件的组件,如 @Component@Repository 等,也可以通过指定 basePackages 来更细粒度的定制扫描范围。

      graph TD
      A[收集条件和回调接口 ApplicationIntializer/ApplicationListener] --step1 started--> B[准备 Environment]
      B -- step2 environmentPrepared--> C[初始化 ApplicationContext 设置 Enviornment]
      C -- step3 contextPrepared contextLoaded --> D[refresh context 启动完成]
      

    相关文章

      网友评论

          本文标题:Spring Boot 注解

          本文链接:https://www.haomeiwen.com/subject/gwfvsftx.html