闲情居|Spring Boot源码解析——Spring Boot系列( 三 )
④ org.springframework.boot.SpringApplication#refresh
⑤ org.springframework.context.support.AbstractApplicationContext#refresh
到了AbstractApplicationContext#refresh方法 , 之前讲过Spring IoC源码解析讲过该方法的12大步 , 这里就不细说 , 详细可以参考:Spring系列(三):Spring IoC源码解析 , 里面说过有一步就是onRefresh() , 这个方法默认是空的 , 由子类根据自身需要去实现
⑥ org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext#onRefresh
该onRefresh方法分2步
第一:super.onRefresh(); 调用父类的onRefresh()
第二:createWebServer();创建Web服务 , 很重要 , 很重要 , 很重要!!!
⑦ createWebServer()方法
第一:ServletContext servletContext = getServletContext(); 获取Servlet的上下文
第二:ServletWebServerFactory factory = getWebServerFactory();获取Tomcat的Web服务工厂
第三:this.webServer = factory.getWebServer(getSelfInitializer()); 创建一个Web服务器
⑧ TomcatServletWebServerFactory#getWebServer()方法 , 主要用于创建一个Tomcat Web容器
到此我们知道Spring Boot的启动通过Spring IoC的refresh中的的onRefresh()带动了Tomcat的启动 , 跟我们之前我们学Spring Mvc的时候刚好相反 , Spring Mvc的是Tomcat的启动带动了Spring容器的启动;
三、普通Web工程启动1、普通的web工程 , 我们找到web.xml , 会发现都配置了如下的加载Spring的配置 。 2、Tomcat启动的时候会调用该上下文加载的的监听器的contextInitialized方法 , 我们进入到该方法:
3、进入初始化Web应用上下文initWebApplicationContext方法中:
- this.context = createWebApplicationContext(servletContext);
- configureAndRefreshWebApplicationContext(cwac, servletContext);
四、Spring Boot启动流程图
最后 , 咱给小编:
1. 点赞+关注
2. 点头像关注后多多评论 , 转发给有需要的朋友 。
谢谢!!
推荐阅读
- 闲情居|华为云手机发布,真正的5G手机,绕过光刻机的技术壁垒
- 笑看尘世|Spring4基础二二-AOP篇-通知(2)-通知详解
- 闲情居|这个毫无存在感的手机品牌,做了一款可能是今年最奇葩的手机
- 一味宠爱|Springboot整合K8s读取ConfigMap刷新配置
- 闲情居|准备弯道超车?华为放出大招!未来光刻机或将变成废铁?
- 小熊科技|从零学ELK系列(十):SpringBoot接入ELK升级版
- 三好先森|基于JeecgBoot快速开发简历库系统,开源项目,实操分享
- 闲情居|CD机黄金年代的传奇 把玩Revox瑞华士B226 CD机
- 闲情居|突发 | 特斯拉最新事故造成人员伤亡,官方:车辆没有发生故障
- 澄澈的眼|这Spring注入对象处理过程也太细了,收藏了,什么神仙
