在AbstractApplicationContext的onRefresh方法中,进入了ServletWebServerApplicationContext类的onRefresh()方法,如下:
@Override
protected void onRefresh() {
super.onRefresh();
try {
createWebServer();
}
catch (Throwable ex) {
throw new ApplicationContextException("Unable to start web server", ex);
}
}
createWebServer()方法如下:
private void createWebServer() {
WebServer webServer = this.webServer;
ServletContext servletContext = getServletContext();
if (webServer == null && servletContext == null) {
ServletWebServerFactory factory = getWebServerFactory();
this.webServer = factory.getWebServer(getSelfInitializer());
}
一、TomcatServletWebServerFactory
其中getWebServerFactory()是返回了ServletWebServerFacotry类型的bean,此处返回的bean是TomcatServletWebServerFactory,其