@SpringBootApplication注解到底做了什么,你真的了解吗?

简介: @SpringBootApplication注解到底做了什么,你真的了解吗?

@SpringBootApplication

image.png

@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 {
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
  String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
  /**
   * Exclude specific auto-configuration classes such that they will never be applied.
   * @return the classes to exclude
   */
  Class<?>[] exclude() default {};
  /**
   * Exclude specific auto-configuration class names such that they will never be
   * applied.
   * @return the class names to exclude
   * @since 1.3.0
   */
  String[] excludeName() default {};
}

注意到AutoConfigurationImportSelector类

image.png

返回AutoConfigurationImportSelector.AutoConfigurationEntry基础上, AnnotationMetadata import的@Configuration类。


autoConfigurationMetadata - 自动配置的元数据


annotationMetadata - 配置类的注释元数据

返回:应导入自动配置

image.png

获得配置

返回应该被视为自动配置类名。 默认情况下,此方法将使用加载候选人SpringFactoriesLoader与getSpringFactoriesLoaderFactoryClass()


元数据 - 源元数据


属性-将annotation attributes

返回:候选配置列表

image.png

  • 看下其中的断言中指定的

META-INF/spring.factories

为我们实现了很多自动装配

image.png

我们随便看下这个类

image.png

内嵌的 tomcat

image.png

其实就是开启 springMVC,这只是 sb 批量自动装配的一个组件

image.png

ServletWebServerFactoryAutoConfiguration

image.png

自动装配 - 启动一个内嵌的 tomcat

image.png

目录
相关文章
|
3月前
|
缓存 前端开发 Java
Spring问题之@SpringBootApplication注解是什么有什么作用
Spring问题之@SpringBootApplication注解是什么有什么作用
|
2月前
|
Java Spring
Spring的Bean生命周期中@PostConstruct注解
【8月更文挑战第3天】在Spring框架中,`@PostConstruct`注解标示Bean初始化完成后立即执行的方法。它在依赖注入完成后调用,适用于资源加载、属性设置等初始化操作。若方法中抛出异常,可能影响Bean初始化。与之对应,`@PreDestroy`注解的方法则在Bean销毁前执行,用于资源释放。
|
3月前
|
Java Spring
@PostConstruct注解的使用
@PostConstruct注解的使用
36 0
|
Java Spring
Spring 如何通过反射获取controller 包下所有的类,以及类上的注解
Spring 如何通过反射获取controller 包下所有的类,以及类上的注解
288 0
|
Java 数据库 Spring
Spring中的@Transactional注解放在类上和方法上有什么不同?
Spring中的@Transactional注解放在类上和方法上有什么不同?
313 0
Zp
|
小程序 Java Spring
记@ComponentScan注解的坑
记@ComponentScan注解的坑
Zp
442 0
|
Java 网络架构 开发者
SpringBootApplication 注解和 RestController 注解|学习笔记
快速学习 SpringBootApplication 注解和 RestController 注解
114 0
SpringBootApplication 注解和 RestController 注解|学习笔记
|
XML Java 数据格式
@Bean 注解
@Bean 注解
2961 5
|
开发框架 Java Spring
Spring - 属性注入之注解(@Autowired、@Qualifier、@Resource)
Spring - 属性注入之注解(@Autowired、@Qualifier、@Resource)
250 0
Spring - 属性注入之注解(@Autowired、@Qualifier、@Resource)