Spring Boot解析,以HelloWorld为例

主程序类(主入口类)—— @SpringBootApplication注解

@SpringBootApplication:Spring Boot应用标注在某个类上的说明这个类是Spring Boot的著配置类,Spring Boot会运行这个类的main方法来执行Spring Boot程序

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
                    @Filter(type = FilterType.CUSTOM, classes ={TypeExcludeFilter.class}), 
                    @Filter(type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class})
                })
public @interface SpringBootApplication {

@SpringBootApplication注解主要由以下注解组成:

  • @SpringBootConfiguration:实际就是一个@Configuration的别名配置注解,表示这是一个Spring Boot配置类

    @Configuration
    public @interface SpringBootConfiguration {
    

    @Configuration底层就是一个@Component注解的@interface,其实就是一个组件

    @Component
    public @interface Configuration {
    
  • @EnableAutoConfiguration:启动Spring Boot的自动配置

    @AutoConfigurationPackage
    @Import({AutoConfigurationImportSelector.class})
    public @interface EnableAutoConfiguration {
    
    • @AutoConfigurationPackage:自动配置包,实际就是一个@Import注解的@interface,@Import表示为容器注入一些组件

      @Import({Registrar.class})
      public @interface AutoConfigurationPackage {
      

      Registrar类会将主配置类(即@SpringBootApplication标注的类)所在的包及其子包里的所有组件全部扫描到Spring容器中

    • @Import(EnableAutoConfigurationImportSelector.class):为容器注入一些组件

      EnableAutoConfigurationImportSelector是一个告诉Spring应该导入哪些组件的选择器,将需要的组件以全类名的方式返回,然后这些组件就会被添加到容器中。其实最终就是添加一系列的自动配置类,形如xxxxAutoConfiguration,这些自动配置类会自动导入所用场景的组件和配置

      Spring Boot在启动时会从类路径下的MATE-INF/spring.factories中获取EnableAutoConfiguration中指定的值,将这些值导入到容器中,自动配置类就生效了,Spring Boot就会自动帮我们完成配置

  • @ComponentScan:组件扫描

原文地址:https://www.cnblogs.com/renoside/p/13606718.html