SpringBoot——嵌入式Servlet自动启动原理

低版本的Servlet容器自动启动原理(以tomcat为例)
 ①SpringBoot应用启动时会运行主配置类的main(),该方法中调用了run()

public static void main(String[] args) {
	SpringApplication.run(SpringBootWebApplication.class, args);
}

 ②run()中调用了refreshContext(context);SpringBoot在该方法中刷新IOC容器(创建IOC容器对象,并初始化容器,创建容器中的每一个组件;如果是web应用创建AnnotationConfigEmbeddedWebApplicationContext,否则创建一个普通的IOC容器AnnotationConfigApplicationContext
 ③refresh(context);刷新刚才创建好的IOC容器
 ④refresh(context)方法中调用了onRefresh(),web的IOC容器重写了onRefresh方法
 ⑤web的IOC容器会调用createEmbeddedServletContainer()创建嵌入式的Servlet容器
 ⑥获取嵌入式的Servlet容器工厂:从IOC容器中获取EmbeddedServletContainerFactory组件;TomcatEmbeddedServletContainerFactory创建
对象,后置处理器一看是这个对象,就获取所有的定制器先来定制Servlet容器的相关配置;
EmbeddedServletContainerFactory containerFactory = getEmbeddedServletContainerFactory();
 ⑦使用容器工厂获取嵌入式的Servlet容器:
this.embeddedServletContainer = containerFactory
.getEmbeddedServletContainer(getSelfInitializer());
 ⑧嵌入式的Servlet容器创建对象并启动Servlet容器;

this.tomcat.start();

 ⑨再将IOC容器中剩下的未创建的对象创建出来(controller、service等)
总结:IOC容器在启动时会创建嵌入式的Servlet容器并启动该Servlet容器

高版本中会有些不同,这里不做探究了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值