一.jar包打包执行
1.SpringBoot提供了一个插件spring-boot-maven-plugin用于把程序打包成一个可执行的jar包。
2.Spring Boot应用打包之后,生成一个Fatjar(ar包中包含jar),包含了应用依赖的jar包和Spring Boot loader相关的类。
3.java -jar会去找jar中的manifest文件,在那里面找到真正的启动类
4.Fatjar的启动Main函数是JarLauncher,它负责创建一个LaunchedURLClassLoader来加载boot-lib下面的jar,并以一个新线程启动应用的Main函数
项目的main方法
二.SpringBoot的启动原理?
1.运行main方法:初始化SpringApplication 从spring.factories 读取 listener ApplicationContextlnitializer
将启动类放入primarySources 国
推算当的web应用类型 webApplicationType 国
1.初始化SpringApplication: new SpringApplication(primarySources)读取ApplicationContextinitializer初始化器回总结:初始化信息
nlisten 听器回
提main方法所在的类放入mainApplicationClass医
2.运行run方法
3.读取 环境变量 配置信息.
4.创建springApplication上下文:ServletWebServerApplicationContext
5.预初始化上下文:'读取启动类
6.调用refresh 加载ioc容器
加载所有的自动配置类创建(内置)servlet容器,tomcat容器也包括在内
三.内置tomcat 启动
当依赖Spring-boot-starter-web依赖时会在SpringBoot中添加:ServletWebServerFactoryAutoConfiguration servlet容器自动配置类。 该自动配置类通过@lmport导入了可用(通过@ConditionalOnClass判断决定使用哪一个)的一个Web容器工厂(默认Tomcat)
在内嵌Tomcat类中配置了一个TomcatServletWebServerFactory的Bean(Web容器工厂)。 它会在SpringBoot启动时 加载ioc容器(refresh)OnRefersh创建内嵌的Tomcat并启动,然后挂起等待用户访问
完成