版本信息

Spring Boot 2.5.4

启动类

  1. @SpringBootApplication
  2. @MapperScan(basePackages = {"com.ybqdren.mapper"} )
  3. @ComponentScan(basePackages = {"com.ybqdren","org.n3r.idworker"})
  4. public class Application {
  5. public static void main(String[] args){
  6. SpringApplication.run(Application.class,args);
  7. }
  8. }

注解解析

@SpringBootApplication

  1. // 元注解,用来描述注解的适用范围,其中TYPE用来描述类 接口(包括包注解类型)或enum声明
  2. @Target(ElementType.TYPE)
  3. // 元注解,描述注解的生命周期,保留到class文件中(三个声明周期)
  4. @Retention(RetentionPolicy.RUNTIME)
  5. // 元注解,描述标明这个注解应该被javadoc记录
  6. @Documented
  7. // 元注解,子类可以继承该注解
  8. @Inherited
  9. // 继承了Configuration,表示被注解的类是注解类
  10. @SpringBootConfiguration
  11. // 让被注解的类拥有自动装配配置文件的功能,其中使用了@Import注解,导入了自动导入AutoConfigurationImportSelector类
  12. @EnableAutoConfiguration
  13. // 扫描路径设置
  14. @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
  15. @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
  16. public @interface SpringBootApplication {
  17. // ......
  18. }

@ComponentScan

  1. @Retention(RetentionPolicy.RUNTIME)
  2. @Target(ElementType.TYPE)
  3. @Documented
  4. @Repeatable(ComponentScans.class) // JDK8加入的一个新特性 表示一个注解可以被重复使用
  5. public @interface ComponentScan {
  6. /**
  7. * Specifies which types are not eligible for component scanning.
  8. * @see #resourcePattern
  9. */
  10. Filter[] excludeFilters() default {};
  11. // ...
  12. }

总结

SpringBoot | 【待更】SpringBoot中的注解-SpringBoot启动篇 - 图1

参考资料

Java元注解作用及使用

http://c.biancheng.net/view/7009.html

注解@Repeatable详解

https://cloud.tencent.com/developer/article/1579167

SPRINGBOOT启动流程及其原理

https://www.cnblogs.com/theRhyme/p/11057233.html