每个SpringBoot程序都有一个主入口,也就是main方法,main里面调用SpringApplication.run()启动整个spring-boot程序,该方法所在类需要使用@SpringBootApplication注解。
@SpringBootApplication包括三大注解,@EnableAutoConfiguration,@SpringBootConfiguration,@ComponentScan。
@EnableAutoConfiguration:SpringBoot根据应用所声明的依赖来对Spring框架自动配置。
以前需要手动配置的代码,SpringBoot自动地配置。而注解@EnableAutoConfiguration就是告知SpringBoot开启自动配置的功能,这样自动配置才能生效。
点击该注解查询源码可以发现该注解中有@AutoConfigurationPackage,@Import({AutoConfigurationImportSelector.class})源码如下所示。
点击@AutoConfigurationPackage中会发现有个组合注解,这个注解表示用于自动配置包点击该注解的可以看到有个Spring底层的注解@Import就是给容器中导入组件,由AutoConfigurationPackages.Registrar.class决定,源码如下所示。
点进Registrar.class这个类可以看到核心的注册并定义信息方法;metadata是注解的原信息,源码如下所示。
@AutoConfigurationPackage本身的含义就是将主配置类也就是“@SpringBootApplication标示的类”所在包及子包里面所有的组件扫描到Spring容器中。
@Import({AutoConfigurationImportSelector.class})
给容器导入组件导入的选择EnableAutoConfigurationImportSelector.class这个选择器类决定。
所导入的对应的注解在spring-boot-autoconfigure\2.3.3.RELEASE\META-INF\spring.factories文件中,源码如下所示。
常用的自动装配的组件:
AopAutoConfiguration:在使用Spring的时候需要AOP相关的功能,在这里该组件就会生效。
CacheAutoConfiguration:使用缓存需要的组件。
JacksonAutoConfiguration:在请求控制层返回json数据的时候需要的组件。
HikariDriverConfigurationFailureAnalyzer:在与数据连接数据库需要的组件。
@SpringBootConfiguration(内部为@Configuration):被标注的类等于在spring的XML配置文件中(applicationContext.xml),装配所有bean事务,提供了一个spring的上下文环境,源码如下所示。
@ComponentScan:组件扫描,可自动发现和装配Bean,默认扫描SpringApplicati on的run方法里的主启动类.class所在的包路径下文件,所以最好将该启动类放到根包路径下。
本章了解了什么是SpringBoot,SpringBoot给开发者带来的优势,并且学习了如何使用SpringInitializr快速构建一个SpringBoot的工程。学习了SpringBoot核心运行原理,使用SpringBoot时,只需引入对应的Starters,SpringBoot启动时便会自动加载相关依赖,配置相应的初始化参数,以最快捷,简单的形式对第三方软件集成,这便是SpringBoot的自动配置功能。
1.使用插件SpringInitializr快速构建一个SpringBoot项目。
2.描述@EnableAutoConfiguration注解主要功能是什么?
3.描述主启动类的执行流程。
4.@ComponentScan注解主要功能是什么?