天天看點

《精通Spring MVC 4》——1.8 嵌入式Servlet容器(Tomcat)的配置

本節書摘來自異步社群《精通spring mvc 4》一書中的第1章,第1.8節,作者:【美】geoffroy warin著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

預設情況下,spring boot在打包和運作應用時,會使用tomcat嵌入式api(tomcat embedded api)。

我們來看一下embeddedservletcontainerautoconfiguration:

上面的代碼非常簡單直接,這個代碼包含了3個不同的配置,哪一個會處于激活狀态要取決于類路徑下哪些内容是可用的。

可以将spring boot與tomcat、tc-server、jetty或者undertow結合使用。伺服器可以很容易地進行替換,隻需将spring-boot-starter-tomcat jar依賴移除掉,并将其替換為jetty或undertow對應的依賴即可。如果你想這樣做的話,請參考相關的文檔。

對servlet容器(tomcat)的所有配置都會在tomcatembeddedservletcontainerfactory中進行。盡管你應該讀一下這個類,它為嵌入式tomcat提供一個非常進階的配置(為其查找文檔會非常困難),但是在這裡我們不會直接檢視這個類。

我會為讀者介紹配置servlet容器時不同的選項。

1.8.1 http端口

通過在application.properties檔案中定義server.port屬性或者定義名為server_port的環境變量,我們可以修改預設的http端口。

通過将該變量設定為−1,可以禁用http,或者将其配置為0,這樣的話,就會在随機的端口上啟動應用。對于測試,這是很便利的。

1.8.2 ssl配置

配置ssl是一項很麻煩的事情,但是spring boot有一項很簡單的解決方案。我們隻需一點屬性就能保護伺服器了:

不過,為了使上面的例子運作起來,我們需要生成一個keystore檔案。

我們将會在第 6 章中,深入介紹安全的可選方案。當然,我們還可以通過添加自己embeddedservletcontainerfactory來進一步自定義tomcatembeddedservletcontainerfactory的功能。

1.8.3 其他配置

在配置中,我們可以通過簡單地聲明@bean 元素來添加典型的 java web 元素,如servlet、filter和servletcontextlistener。

除此之外,spring boot還為我們内置了3項内容:

在jacksonautoconfiguration中,聲明使用jackson進行json序列化;

在httpmessageconvertersautoconfiguration中,聲明了預設的httpmessageconverter;

在jmxautoconfiguration中,聲明了jmx功能。

我們将會在第5章中,更詳細地了解jackson的配置。關于jmx配置,我們可以在本地通過jconsole連接配接應用之後進行嘗試,如圖1-9所示。

《精通Spring MVC 4》——1.8 嵌入式Servlet容器(Tomcat)的配置

圖1-9

通過将org.springframework.boot:spring-boot-starter-actuator添加到類路徑下,我們可以添加更多有意思的mbean。我們甚至可以定義自己的mbean,并通過jolokia将其暴露為http。另一方面,我們也可以禁用這些端點,隻需在配置中添加spring.jmx.enabled=false即可。