1. 概述

Spring Boot 的 Web 应用默认内置了一个嵌入式的 Web 服务器(通常是 Tomcat),开箱即用。但在实际部署或调优过程中,我们往往需要对默认的配置进行修改,以满足特定需求。

本文将介绍几种常见的 Spring Boot 嵌入式 Tomcat 配置方式,主要通过 application.properties 文件进行设置。适用于中高级 Java 开发者,避免基础概念啰嗦,直接上干货 ✅


2. 常见 Tomcat 配置项

2.1. 服务器地址与端口

最基础的配置之一是修改应用的监听端口:

server.port=80

如果不设置,默认是 8080

你也可以指定监听的 IP 地址,比如:

server.address=192.168.1.100

默认值是 0.0.0.0,表示监听所有 IPv4 地址。若改为 127.0.0.1,则只允许本地访问,适合开发环境安全隔离 ❗


2.2. 错误处理配置

Spring Boot 默认启用了一个叫 Whitelabel 的错误页面,用于展示异常信息。如果你不想暴露错误细节,可以关闭它:

server.error.whitelabel.enabled=false

你也可以自定义错误页面路径:

server.error.path=/custom-error

此外,可以控制错误信息的展示内容:

server.error.include-exception=true
server.error.include-stacktrace=always

⚠️ 注意:include-stacktrace 设置为 always 会暴露完整堆栈信息,生产环境建议设为 on_trace_param,仅在请求中带 trace=true 时显示。


2.3. 连接相关配置

在资源受限的容器中,我们可能希望降低 Tomcat 的负载,比如限制最大线程数:

server.tomcat.threads.max=200

设置连接超时时间:

server.connection-timeout=5s

设置请求头最大大小:

server.max-http-header-size=8KB

设置请求体最大大小(默认不吞吐,即不限制):

server.tomcat.max-swallow-size=2MB

设置 POST 请求整体最大大小:

server.tomcat.max-http-post-size=2MB

⚠️ 注意:max-swallow-size 控制的是 Tomcat 是否将大请求体“吞掉”而不处理,设为 -1 表示不限制。


2.4. SSL 配置

启用 SSL 支持:

server.ssl.enabled=true
server.ssl.protocol=TLS

配置密钥库路径、密码等:

server.ssl.key-store-password=your_password
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-alias=tomcat

💡 小贴士:keystore 文件建议放在 src/main/resources 目录下,使用 classpath: 前缀引用。


2.5. 访问日志配置

开启 Tomcat 的访问日志功能:

server.tomcat.accesslog.enabled=true

设置日志目录、文件名格式等:

server.tomcat.accesslog.directory=logs
server.tomcat.accesslog.file-date-format=yyyy-MM-dd
server.tomcat.accesslog.prefix=access_log
server.tomcat.accesslog.suffix=.log

生成的日志文件类似:access_log.2025-04-05.log,便于归档和分析 ✅


3. Tomcat 版本管理

Tomcat 的版本不能通过 application.properties 直接修改,需要借助 Maven 配置。Spring Boot 每个版本都绑定了特定版本的 Tomcat,随意更改可能引发兼容性问题 ⚠️

3.1. 使用 spring-boot-starter-parent

如果你的项目继承了 spring-boot-starter-parent,可以在 pom.xml 中覆盖 tomcat.version 属性:

<properties>
    <tomcat.version>9.0.44</tomcat.version>
</properties>

这样会统一替换所有 Tomcat 相关依赖的版本。

3.2. 不使用 spring-boot-starter-parent

如果你用了自定义 Parent,而是通过 spring-boot-dependencies 管理依赖,那么需要手动在 dependencyManagement 中先声明 Tomcat 依赖:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>9.0.44</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.4.5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

⚠️ 注意顺序:Tomcat 依赖必须放在 spring-boot-dependencies 之前,否则不起作用。


4. 总结

本文介绍了 Spring Boot 中对嵌入式 Tomcat 的常见配置方法,包括:

✅ 端口、地址配置
✅ 错误页面控制
✅ 连接参数调整
✅ SSL 配置
✅ 访问日志开关
✅ Tomcat 版本控制

如需更详细的配置项,建议查阅官方文档:Spring Boot Application Properties

这些配置在部署、性能调优、安全性加固等场景中非常实用,建议集合备用 🔖



原始标题:How to Configure Spring Boot Tomcat | Baeldung

« 上一篇: Java每周,问题277