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
这些配置在部署、性能调优、安全性加固等场景中非常实用,建议集合备用 🔖