SpringBoot内置Tomcat启动原理

概要

Springboot 内嵌 tomcat是如何启动的 ?

整体架构流程

springboot启动 ---- autoconfiguration ---- tomcat
springboot在启动后,通过context 确定是 org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext
然后在 refresh 过程中,执行 onRefresh()
在这里插入图片描述
并在此过程创建 webserver
在这里插入图片描述
webServer 通过 WebServerFactory 获取,而这个工厂是从 springboot 的包里获取的。
在这里插入图片描述
在初始化里

技术细节

提示:打个断点看看tomcat是如何初始化的

我们可以看到嵌入web容器的类是从springboot的包里开始的,springboot支持4中内嵌容器:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里的 Tomcat 服务器建立完毕

@Override
	public WebServer getWebServer(ServletContextInitializer... initializers) {
		if (this.disableMBeanRegistry) {
			Registry.disableRegistry();
		}
		// 初始化 tomcat
		Tomcat tomcat = new Tomcat();
		File baseDir = (this.baseDirectory != null) ? this.baseDirectory : createTempDir("tomcat");
		tomcat.setBaseDir(baseDir.getAbsolutePath());
		for (LifecycleListener listener : this.serverLifecycleListeners) {
			tomcat.getServer().addLifecycleListener(listener);
		}
		Connector connector = new Connector(this.protocol);
		connector.setThrowOnFailure(true);
		tomcat.getService().addConnector(connector);
		customizeConnector(connector);
		tomcat.setConnector(connector);
		tomcat.getHost().setAutoDeploy(false);
		configureEngine(tomcat.getEngine());
		for (Connector additionalConnector : this.additionalTomcatConnectors) {
			tomcat.getService().addConnector(additionalConnector);
		}
		prepareContext(tomcat.getHost(), initializers);
		return getTomcatWebServer(tomcat);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值