在springboot应用中默认的web容器实现就是tomcat。
在ServletWebServerApplicationContext中的onRefresh方法调用createWebServer方法,再从spring容器中找到TomcatServletWebServerFactory,调用他的getWebServer,时序图如下:
下面终点看getWebServer()方法:
首先要理解一个类的作用:
Connector:负责以某一种协议来接受连接请求。
Server:代表一个端口的web服务
Service:代表一种类型的处理类
Container:具体执行业务逻辑的容器
可以看到一个service对应一个Container
for (Connector additionalConnector : this.additionalTomcatConnectors) {
tomcat.getService().addConnector(additionalConnector);
}
这两行代码是交给程序员自己拓展协议接受请求的,比如可以用非http的协议来接受请求。