SpringBoot2.x入门到项目实战课程系列(第二章)( 三 )

  • @SpringBootApplication 注解主要组合了 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
  • @SpringBootApplication 注解说明:
    • 标注在某个类上 ,说明这个类是 Spring Boot 的引导类 , Spring Boot 就应该运行这个类的main方法来启动 SpringBoot 应用;
    @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 是以下3个注解的总和:
        • @SpringBootConfiguration:用于定义一个Spring Boot的配置类( 配置类 等同 配置文件)
          • 引用了 @Configuration 注解 , 是Spring底层的一个注解 , 用于定义 Spring 的配置类 。
          • 配置类也是容器中的一个组件 @Component
        • @EnableAutoConfiguration :
          • 告诉Spring Boot开启自动配置功能 , 这样Spring Boot会自动根据你导入的依赖jar包来自动配置项目 。
    @AutoConfigurationPackage@Import({AutoConfigurationImportSelector.class})public @interface EnableAutoConfiguration {
          • @AutoConfigurationPackage ——》 @Import({Registrar.class})
            • 会将引导类(@SpringBootApplication标注的类)所在的包及下面所有子包里面的所有组件扫描到Spring容器;
          • @Import({AutoConfigurationImportSelector.class})
            • 将所有需要导入的组件以全类名的方式返回; 这些组件就会被添加到容器中
            • 会给容器导入非常多的自动配置类(xxxxAutoConfiguration),就是导入并配置好当前项目中所需要的组件,省去我们手动编写配置去注入组件.

    SpringBoot2.x入门到项目实战课程系列(第二章)文章插图
    • Spring Boot在启动的时候从(spring-boot-autoconfigure-2.0.6.RELEASE.jar)类路径下的METAINF/spring.factories中获取EnableAutoConfiguration指定的值 , 将这些值作为自动配置类导入到容器中 , 自动配置类就生效 , 帮我们进行自动配置工作;以前我们需要自己配置的文件 , 自动配置类都帮我们完成了;

    SpringBoot2.x入门到项目实战课程系列(第二章)文章插图
    • @ComponentScan: 该注解标识的类, 会被 Spring 自动扫描并且装入bean容器 。
    2.6 使用Spring初始化器创建Spring Boot项目
    • 注:初始化向导需要联网创建Spring Boot项目

    SpringBoot2.x入门到项目实战课程系列(第二章)文章插图
    SpringBoot2.x入门到项目实战课程系列(第二章)文章插图
    • 引入功能模块

    SpringBoot2.x入门到项目实战课程系列(第二章)文章插图
    • 默认生成的Spring Boot项目;

    SpringBoot2.x入门到项目实战课程系列(第二章)文章插图
      • 删除不需要的文件与目录,spring-boot-starter-test 是 Spring Boot 单元测试模块