springboot的嵌入式web容器_300块的springboot课程笔记(九)web容器解析

容器启动全流程

1.判断当前所属的容器环境

v2-3413eea2c866a3fead3cacf8233df414_b.jpg
public 

2.启动容器的过程

2.1 初始化特定的容器上下文(因为不同容器注入的属性不同)

v2-a37cdb43b6bd3d08af47649d77da5c99_b.jpg
public 

2.2 webServer创建与启动

v2-c8974613f03022384d886ce094368630_b.jpg

首先会在refreshContext方法调用refresh方法,这个方法有个空实现叫做onRefresh,交给子类来实现,在Servlet的环境下,他会调用createWebServer方法,那顾名思义就是创建一个webServer

v2-ac5416c2cb5c1707a2f5a3e2ccc2aa82_b.jpg

在webServer创建的过程中会调用getWebServerFactory,通过这个工厂类来创建我们的WebServer,默认情况下我们的WebServer是tomcat服务类

@Override
	

3.Servlet启动

在refresh方法当中的finishRefresh方法,通过startWebServer,将上述步骤创建的webServer进行启动,启动完毕后会调用publishEvent方法发布一个ServletWebServerInitializedEvent事件。

Web容器工厂类加载

getWebServerFactory会去获取String[] beanNames = this.getBeanFactory().getBeanNamesForType(ServletWebServerFactory.class);那么这个bean是什么时候注入的呢?

通过一个自动配置类

v2-fa7b36efcf3374ba306b52afab50746d_b.jpg

v2-bd4f567f87591cbfa1075700eb88e707_b.jpg

web容器个性化配置

个性化配置是指可以对tomcat进行属性配置,如修改端口号

  1. 创建ServletWebServerFactory的bean的过程中,会调用postProcesser的后置处理器。即并不是直接配置tomcat对象,而是先配置Factory对象
  2. 容器的属性会通过ConfigurationProperties注入到ServerProperties类中,这些类通过自动配置类的@Bean进行导入
  3. 在后置处理器中调用步骤2中的实现类的customize方法,将属性通过调用bean的setXX方法进行注入(即它把个性化配置的过程挪到bean实例化的后置过程中,而不是加载的时候设置。为了解耦,也为了无个性化配置的区别)

v2-3f6572321bb7ed1eec8f489c69d26447_b.png

v2-4379038737110e19d21ca8223acae92c_b.jpg

v2-07525673d4adc0b351c39c28e5e1862a_b.jpg

v2-996989111e9352ae44ae5024c1fb5bc6_b.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值