SpringBootApplication注解简介

通常,我们在SpringBoot项目中会看到这样一段类似代码,作为SpringBoot项目的调试启动类。

@ComponentScan("com.broadview.*")
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class SamplesApplication {
    public static void main(String[] args) {
        SpringApplication.run(SamplesApplication.class, args);
    }
}

今天就来简单梳理一下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})
      }
  )
  public @interface SpringBootApplication {
}

可以理解为 @SpringBootApplication其实就是以下三个注解的总和

@SpringBootConfiguration: 用于定义一个配置类

@Target({ElementType.TYPE})
  @Retention(RetentionPolicy.RUNTIME)
  @Documented
  @Configuration
  public @interface SpringBootConfiguration {
  }

@EnableAutoConfiguration :Spring Boot会自动根据你jar包的依赖来自动配置项目,也就是实现自动装配。

@Target({ElementType.TYPE})
  @Retention(RetentionPolicy.RUNTIME)
  @Documented
  @Inherited
  @AutoConfigurationPackage
  @Import({AutoConfigurationImportSelector.class})
  public @interface EnableAutoConfiguration {
      String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
  ​
      Class<?>[] exclude() default {};
  ​
      String[] excludeName() default {};
  }

@ComponentScan: 告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器。

就是扫描所标注的类所在包下的所有需要注入的组件,将其注入,这个注解会自动注入所有在主程序所在包下的组件,相当于SSM项目中的以下配置内容:

<context:component-scan base-package=”com.xxx”></context:component-scan>

参考内容: https://blog.csdn.net/qq_28289405/article/details/81302498

滚动到顶部

免费制作创意短视频活动

复工复产之际,博视优学隆重推出免费制作视频活动——只需告诉我们您的视频需求,我们将免费为您制作一个创意短视频,用于您的营销推广或教学实践等。零成本试水短视频,开放名额有限,机不可失,不要犹豫!