Skip to content

Latest commit

 

History

History
72 lines (52 loc) · 2.63 KB

3. Hello World Details 2.md

File metadata and controls

72 lines (52 loc) · 2.63 KB

3. Hello World Details 2

3.1 主程序类,主入口类

/**
 * 标注主程序类,说明是一个SpringBoot应用
 */
@SpringBootApplication
public class HelloWorldApplication {
    public static void main(String[] args){

        //启动Spring应用
        SpringApplication.run(HelloWorldApplication.class,args);
    }
}

@SpringBootApplication:重要注解,标注在某个类上说明是Spring Boot的主配置类,Spring Boot应该运行这个类的main方法来启动Spring Boot应用。

由一系列组合注解组成:

@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}
)}
)

@SpringBootConfiguration: Spring Boot的配置类,标注在某个类上,表示是一个Spring Boor的配置类

@Configuration:配置类上来标注这个注解(配置类:配置文件,配置类也是容器中的一个组件@Component)

@EnableAutoConfiguration:开启自动配置功能,以前需要配置的东西,Spring Boot帮助自动配置,@EnableAutoConfiguration告诉Spring Boot开启自动配置功能,使得自动配置生效

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({EnableAutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";

    Class<?>[] exclude() default {};

    String[] excludeName() default {};
}

@AutoConfigurationPackage:自动配置包 ,==将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里的所有组件扫描到Spring容器==

​ @Import({Registrar.class}):Spring底层注解,给容器中导入一个组件,导入的组件由AutoConfigurationPackages.Registrar.class;

@Import({EnableAutoConfigurationImportSelector.class}):给容器中导入组件,EnableAutoConfigurationImportSelector:导入哪些组件的选择器。将所有需要导入的组件以全类名的方式返回。组件就会被添加到容器中。会给容器中导入很多自动配置类(xxxAutoConfiguration),就是给容器中导入这个场景需要的所有组件,并配置好这些组件。有了自动配置类可以免去手动编写配置注入功能组件的工作。