在 Spring Boot 中使用設定檔啟用或停用嵌入式 Tomcat
1.概述
當我們想要在 Spring Boot 應用程式中啟用或停用嵌入式 Tomcat 伺服器時,我們需要根據應用程式的要求考慮不同的方法。預設情況下,Spring Boot 提供了一個嵌入式 Tomcat 伺服器,但在某些情況下,我們可能想要停用它。
對於需要嵌入式伺服器的應用程序,我們可以使用預設配置。但是,對於不公開 Web 端點或需要作為後台服務運行的應用程序,停用 Tomcat 可以最佳化資源使用率。
在本教程中,我們將探討何時啟用或停用嵌入式 Tomcat 伺服器以及如何設定 Spring Boot 設定檔以動態實現這一點。
2. 了解 Spring Boot 中的嵌入式 Tomcat
Spring Boot 透過在應用程式的可執行 JAR 檔案中捆綁嵌入式 Tomcat 伺服器來簡化應用程式部署。這種方法無需安裝和配置外部 Tomcat 實例,從而使我們的開發和部署更加有效率。
Spring Boot 使用 Spring Boot Starters 來包含嵌入式 Tomcat 所需的依賴項。預設啟動器spring-boot-starter-web
在類別路徑中出現時會自動配置和初始化 Tomcat。
2.1.嵌入式 Tomcat 的優勢
Spring Boot 的嵌入式 Tomcat 伺服器有以下幾個優點:
- 簡化部署:無需安裝外部 Tomcat 伺服器
- 自包含應用程式:應用程式可以打包為 JAR 檔案並在任何地方運行
- 自動配置: Spring Boot 根據依賴項自動配置 Tomcat
- 靈活性:可以輕鬆替換為 Jetty 或 Undertow 等其他嵌入式伺服器
2.2.何時禁用 Tomcat 伺服器
雖然嵌入式 Tomcat 很有用,但在某些情況下禁用它會對我們有利:
- 非 Web 應用程式:不處理 HTTP 請求的應用程序,例如 CLI 工具或批次作業
- 具有替代伺服器的微服務:某些服務可能使用專用的 Web 伺服器,例如 Nginx
- 資源最佳化:停用 Tomcat 可減少記憶體和 CPU 使用率
3.配置Spring Boot配置文件
Spring Boot 為我們提供了spring.profiles.active
屬性來定義特定於環境的配置。我們可以建立不同的基於設定檔的配置來控制是否啟用我們的嵌入式 Tomcat 伺服器。
為了定義配置文件,我們通常會建立單獨的配置文件,例如:
-
application-dev.properties
(用於啟用 Tomcat 的開發) -
application-batch.properties
(用於不使用 Tomcat 的批次)
4. 使用設定檔停用嵌入式 Tomcat
Spring Boot 根據spring.main.web-application-type
屬性決定是否啟用嵌入式 Web 伺服器。我們可以將其設定為NONE
來停用嵌入式 Tomcat。
為了在特定於設定檔的配置中執行此操作,我們修改application-batch.properties
檔案:
spring.main.web-application-type=NONE
當此設定檔處於活動狀態時,Spring Boot 將不會啟動 Tomcat,而是將應用程式視為非 Web 服務。
或者,我們可以使用 YAML 設定此設定:
spring:
main:
web-application-type: NONE
5. 不同設定檔的範例配置
讓我們用兩個設定檔來設定一個應用程式:
- 開發設定檔 (dev) – Tomcat 已啟用(預設)。
- 批次設定檔(批次)– Tomcat 已停用。
為了確保我們的嵌入式 Tomcat 伺服器正常啟動,讓我們在application-dev.properties
檔案中設定屬性:
spring.main.web-application-type=SERVLET
為了停用嵌入式 Tomcat 伺服器的批次,我們需要在application-batch.properties
檔案中設定屬性:
spring.main.web-application-type=NONE
6. 在設定檔之間切換
一旦我們定義了多個配置文件,我們就可以透過application.properties
文件啟動所需的設定檔:
spring.profiles.active=batch
或者,我們可以將其作為命令列參數傳遞:
java -Dspring.profiles.active=batch -jar myapp.jar
這種靈活性使我們能夠根據需要在開發、測試或生產部署期間在支援 Web 模式和非 Web 模式之間切換。
7. 結論
Spring Boot 允許使用設定檔靈活設定嵌入式 Tomcat 伺服器。透過利用spring.main.web-application-type
,我們可以在非 Web 應用程式需要時停用 Tomcat,從而優化資源使用和部署配置。使用基於設定檔的設定或動態 Java 邏輯可確保我們的應用程式無縫適應不同的環境。