# SpringBoot | 怎樣啟動tomcat以及怎樣配置tomcat。


SpringBoot | 怎樣啟動tomcat以及默認的tomcat配置。

標簽(空格分隔): springboot tomcat


因為springboot已經被大部分公司運用,所以基於springboot 來講解tomcat。

  • springboot 怎樣引入的tomcat
  • springboot 怎樣創建一個tomcat實例
  • springboot 從哪里讀取tomcat配置
  • springboot 中tomcat的配置詳解

本文主要講解這三個問題

springboot 怎樣引入的tomcat

當我們在項目中加入

org.springframework.boot spring-boot-starter-web

加入這個依賴后,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實例中的。

探果網


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM