Spring Boot笔记
1、谈谈你对Spring Boot的理解,以及那些优点
SpringBoot是用来快速开发Spring应用的一个脚手架,简化Spring应用的初始搭建以及开发过程
1.SpringBoot提供了很多内置的Starter结合自动配置,对主流框架无配置集成,开箱即用
2.简化开发
3.减少版本冲突
2、Spring Boot的核心注解
1.SpringBootApplication注解:标注他是一个SpringBoot工程
2.SpringBootConfigration注解:表示启动类也是一个配置类
3.EnableAutoConfigration注解:自动配置类
3、SpringBoot的自动配置原理
4、SpringBoot的jar为何可以直接运行?
1.SpringBoot提供了一个插件spring-boot-maven-plugin用于把程序打包成一个可执行的jar包
2.SpringBoot应用打包之后,包含了应用依赖的jar和loader相关的类
3.java -jar指令回去寻找jar包中MANIFEST.MF文件,在里面找到真正的执行类(Main-Class:JarLauncher.class)
4.启动的Main函数是JarLauncher,它负责创建一个LauncherURLClassLoader的类加载器,用来加载boot-lib下的jar包,并启动一个子线程去执行
MANIFEST.MF文件中的Start-Class,这个就是我们自己写的那个启动类了
5、Sping Boot源码启动
1.调用run方法之后,会生成一个SpringApplication的对象
1.1.推测web应用类型(NONE、REACTIVE、SERVLET)
1.2.从spring.factories中获取ApplicationContextInitializer对象
1.3.从spring.factories中获取ApplicationListener对象
1.4.推测Main方法所在的类
2.然后在调用SpringApplication对象的run方法
2.1.从spring.factories中获取SpringApplicationRunListener对象 -----> EventPublishingRunListener
2.2.调用RunListener的starting方法
2.3.将run方法的参数封装为DefaultApplicationArguments对象
2.4.准备环境变量
2.5.根据应用类型创建一个Spring容器
2.6.初始化Spring容器
2.7.把run方法中的配置类,注册成为一个bean
2.8.listeners.contextLoaded方法
2.9.调用refreshContext() 刷新Spring容器,会解析配置类、扫描、启动WebServer
共有 0 条评论