SpringBoot | 怎樣啟動tomcat以及默認的tomcat配置。
標簽(空格分隔): springboot tomcat
因為springboot已經被大部分公司運用,所以基於springboot 來講解tomcat。
- springboot 怎樣引入的tomcat
- springboot 怎樣創建一個tomcat實例
- springboot 從哪里讀取tomcat配置
- springboot 中tomcat的配置詳解
本文主要講解這三個問題
springboot 怎樣引入的tomcat
當我們在項目中加入
加入這個依賴后,maven會把tomcat的一些jar也加入進來。 這些jar包應該是一些開源工作者在維護着。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.31</version>
</dependency>
上面這個依賴是springboot為我們准備好的,版本號為8.5.31,springboot的版本為:2.0.x。 這個依賴包含了tomcat的核心jar包。springboot 初始化tomcat,啟動tomcat都需要這個jar。
當我們 run springboot的引導文件時,springboot 會創建WebServer,
我們跟着這個方法(createWebServer())走下去。
@Override
protected void onRefresh() {
super.onRefresh();
try {
createWebServer();
}
catch (Throwable ex) {
throw new ApplicationContextException("Unable to start web server", ex);
}
}
這里會去獲取一個webServier,這個方法里面很多引用的類都存在於上面提到的jar包中。 new Tomcat() 創建一個tomcat 實例。到這里我們已經看到springboot已經創建了一個tomcat實例。
@Override
public WebServer getWebServer(ServletContextInitializer... initializers) {
Tomcat tomcat = new Tomcat();
File baseDir = (this.baseDirectory != null ? this.baseDirectory
: createTempDir("tomcat"));
tomcat.setBaseDir(baseDir.getAbsolutePath());
Connector connector = new Connector(this.protocol);
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);
}
當我們追蹤到里面的類時,發現里面已經配置好了端口以及一些其他配置。
這樣已經能創建一個默認的tomcat。 我們需要知道的是springboot是怎樣吧appplication.property中的配置運用到tomcat實例中的。