1. 自动配置
pom.xml
-
spring-boot-dependencies:核心依赖在父工程中
-
引入springboot依赖的时候,不需要指定版本,因为有版本仓库
启动器:
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
就是springboot的启动场景
-
例如:spring-boot-starter-web,会自动导入web环境所有的依赖
-
要使用什么功能只需要找到对应的启动器就可以了
主程序:
@SpringBootApplication public class Spring01HelloworldApplication { public static void main(String[] args) { //将springboot应用启动 SpringApplication.run(Spring01HelloworldApplication.class, args); } }
-
注解
@SpringBootConfiguration : springboot的配置 @Configuration: spring配置类 @Component:说明这是一个spring的组件 @EnableAutoConfiguration : 自动配置 @AutoConfigurationpackage:自动配置包 @Import(AutoConfigurationPackages.Registrar.class):自动配置包注册 @Import(AutoConfigurationPackages.Selector.class):自动配置导入选择器
META-INF/spring.factories:自动配置的核心文件
结论:springboot所有自动配置都是在启动的时候扫描并加载spring.factories里的所有自动装配类,是否生效取决于是否导入对应的start依赖
-
springboot在启动的时候,从META-INF/spring.factories类路径下获取指定的值
-
将这些自动配置的类导入容器,自动配置就会生效
-
以前需要手动配置的,现在springboot帮我们自动配置了
-
javaEE自动配置的东西都在spring-boot-autoconfigure-2.7.0.jar包下
-
它会把需要导入的组件以类名的方式返回,这些组件就会被添加到容器
@ComponentScan:作用:自动扫描并加载符合条件的组件或者bean , 将这个bean定义加载到IOC容器中
@SpringBootConfiguration:作用:SpringBoot的配置类 ,标注在某个类上 , 表示这是一个SpringBoot的配置类;
SpringApplication.run分析
分析该方法主要分两部分,一部分是SpringApplication的实例化,二是run方法的执行;
SpringApplication这个类主要做了以下四件事情:
1、推断应用的类型是普通的项目还是Web项目
2、查找并加载所有可用初始化器 , 设置到initializers属性中
3、找出所有的应用程序监听器,设置到listeners属性中
4、推断并设置main方法的定义类,找到运行的主类