51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

在 Spring Boot 中通过 Profile 启用或禁用嵌入式 Tomcat

1、概览 {#1概览}

默认情况下,Spring Boot 提供嵌入式 Tomcat 服务器,但在某些情况下,我们可能希望根据应用的需求来禁用/启用它。

对于不需要 Web 服务的 Spring Boot 应用,禁用 Tomcat 可以节省资源。

2、理解 Spring Boot 中的嵌入式 Tomcat {#2理解-spring-boot-中的嵌入式-tomcat}

Spring Boot 在应用的可执行 JAR 文件中捆绑了嵌入式 Tomcat 服务器,从而简化了应用的部署。这种方法消除了安装和配置外部 Tomcat 实例的需要,使开发和部署更加高效。

Spring Boot 使用 Spring Boot Starter 来包含嵌入式 Tomcat 的必要依赖。默认情况下, spring-boot-starter-web Starter 会在 Tomcat 出现在 classpath 中时自动配置和初始化 Tomcat。

2.1、嵌入式 Tomcat 的优势 {#21嵌入式-tomcat-的优势}

Spring Boot 的嵌入式 Tomcat 服务器具有多种优势:

  • 简化部署:无需安装外部 Tomcat 服务器。
  • 独立的应用:应用程序可打包为 JAR 文件,在任何地方运行。
  • 自动配置:Spring Boot 根据依赖自动配置 Tomcat。
  • 灵活 :可轻松替换为 JettyUndertow 等其他嵌入式服务器。

2.2、为什么要禁用 Tomcat 服务器? {#22为什么要禁用-tomcat-服务器}

虽然嵌入式 Tomcat 很有用,但在某些情况下,禁用它对我们也有好处:

  • 非 Web 应用:不提供 HTTP 请求的 Web 程序,如 CLI 工具或批处理作业
  • 使用替代服务器的微服务:有些服务可能会使用专用网 Web 服务器,如 Nginx
  • 资源优化:禁用 Tomcat 可降低内存和 CPU 使用率

3、配置 Spring Boot Profile {#3配置-spring-boot-profile}

Spring Boot 为我们提供了 spring.profiles.active 属性,用于定义特定环境的配置。我们可以创建不同的基于 profile 的配置,以控制是否启用嵌入式 Tomcat 服务器。

我们通常会针对不同的环境创建单独的配置文件,例如

  • application-dev.properties (用于启用 Tomcat 进行开发)
  • application-batch.properties (用于不使用 Tomcat 的批处理应用)

4、通过配置禁用嵌入式 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、不同 Profile 的配置示例 {#5不同-profile-的配置示例}

定义两个 profile:

  • Development Profile(dev) - 启用 Tomcat(默认设置)。
  • Batch Profile(batch) - 禁用 Tomcat

要确保嵌入式 Tomcat 服务器正常启动,在 application-dev.properties 文件中设置如下属性:

spring.main.web-application-type=SERVLET

要禁用嵌入式 Tomcat 服务器进行批处理,在 application-batch.properties 文件中设置如下属性:

spring.main.web-application-type=NONE

6、切换 Profile {#6切换-profile}

定义多个 profile 配置后,就可以通过 application.properties 文件激活所需的配置文件:

spring.profiles.active=batch

或者,也可以将其作为命令行参数传递:

java -Dspring.profiles.active=batch -jar myapp.jar

这种灵活性使我们能够在开发、测试或生产部署过程中根据需要在 Web 应用和非 Web 应用之间进行切换。

7、总结 {#7总结}

Spring Boot 允许使用 Profile 对嵌入式 Tomcat 服务器进行灵活配置。通过利用 spring.main.web-application-type,我们可以在非 Web 应用需要时禁用 Tomcat,从而优化资源使用和部署配置。使用基于 Profile 的设置可确保我们的应用无缝适应不同的环境。


Ref:https://www.baeldung.com/spring-boot-enable-disable-embedded-tomcat

赞(2)
未经允许不得转载:工具盒子 » 在 Spring Boot 中通过 Profile 启用或禁用嵌入式 Tomcat