原理初探
自动配置
pom.xml
- spring-boot-dependencies
- 我们在写入或引入一些springboot依赖的时候,不需要指定版本,就因为有这些版本仓库
启动类
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
-
启动类:说白了就是springboot的启动场景
-
比如说spring-boot-starter-web,他就会帮我们自动导入web环境所有的依赖!
-
springboot会将所有的功能场景,变成一个个的启动器
-
我们需要什么功能,就只需要找到对应的启动器
starter
主程序
// @SpringBootApplication : 标注的这个类是一个springboot的应用
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
// 将springboot应用启动
SpringApplication.run(SpringbootApplication.class, args);
}
}
-
注解
-
谈谈SpringBoot的理解
- 自动装配
- 告诉他怎么加载
- 约定大于配置
- run()
- 1、判断是普通项目还是web项目
- 2、查找并加载所有的可用初始化器,设置到initializers属性中
- 3、找出所有的应用程序监听器,设置到listeners属性中—获取上下文 处理—全面接管springmvc配置 扩展它
- 4、推断并设置main方法的定义类,找到运行的主类
全面接管springmvc的配置!实操!
springboot怎么启动的
面试官问你你可以这样说,springboot是通过main方法下的SpringApplication.run方法启动的,启动的时候他会调用refshContext方法,先刷新容器,然后根据解析注解或者解析配置文件的形式注册bean,而它是通过启动类的SpringBootApplication注解进行开始解析的,他会根据EnableAutoConfiguration开启自动化配置,里面有个核心方法ImportSelect选择性的导入,根据loadFanctoryNames根据classpash路径以MATA-INF/spring.factorces下面以什么什么EnableAutoConfiguration开头的key去加载里面所有对应的自动化配置,他并不是把这一百二十多个自动化配置全部导入,在他每个自动化配置里面都有条件判断注解,先判断是否引入相互的jar包,再判断容器是否有bean再进行注入到bean容器
面试官为你可以这样说,springboot是通过main方法下的SpringApplication