springboot 中的 tomcat 启动时候的
Posted chuliang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 中的 tomcat 启动时候的相关的知识,希望对你有一定的参考价值。
EmbeddedWebApplicationContext 的onRefresh方法
@Override protected void onRefresh() { super.onRefresh(); try { createEmbeddedServletContainer(); } catch (Throwable ex) { throw new ApplicationContextException("Unable to start embedded container", ex); } }
private void createEmbeddedServletContainer() { EmbeddedServletContainer localContainer = this.embeddedServletContainer; ServletContext localServletContext = getServletContext(); if (localContainer == null && localServletContext == null) { EmbeddedServletContainerFactory containerFactory = getEmbeddedServletContainerFactory(); this.embeddedServletContainer = containerFactory .getEmbeddedServletContainer(getSelfInitializer()); } …………………………………… initPropertySources(); }
这里有三个方法比较重要,
第一个是getEmbeddedServletContainerFactory,这个是去spring工厂获取注册的EmbeddedServletContainerFactory.class,servletContainer的工厂的注册是在
EmbeddedServletContainerAutoConfiguration,也是autoconfigure中注册的,里面根据jar包,判断是TomcatEmbeddedServletContainerFactory,JettyEmbeddedServletContainerFactory还是
UndertowEmbeddedServletContainerFactory,
第二个:TomcatEmbeddedServletContainerFactory的getEmbeddedServletContainer方法,是启动tomcat的核心,里面有实例化各个级别的容器,启动nio,连接servlet和tomcat和spring等
第三个:getSelfInitializer():返回的是一个实现了
以上是关于springboot 中的 tomcat 启动时候的的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot与Tomcat的启动(内嵌Tomcat)