spring boot内嵌tomcat端口和上下文路径可通过配置文件(application.properties/yml)或编程方式(webserverfactorycustomizer)修改,支持server.port设端口、server.servlet.context-path设统一前缀,端口0表示随机分配,配置错误前缀(如spring.server.port)将失效。

Spring Boot 内嵌 Tomcat 的端口和访问路径,主要通过配置文件或编程方式修改,无需改动 Tomcat 本身。
修改服务端口(server.port)
最常用方式是在 application.properties 或 application.yml 中设置:
-
application.properties:
server.port=8081 -
application.yml:
server:<br> port: 8081
启动时 Spring Boot 会自动读取该配置,绑定到指定端口。若端口被占用,会抛出 Address already in use 异常。
修改应用上下文路径(server.servlet.context-path)
默认情况下,应用根路径是 /,所有接口直接通过 http://localhost:8080/xxx 访问。如需加统一前缀(比如部署在 Nginx 后需匹配 /api),可配置:
-
application.properties:
server.servlet.context-path=/myapp -
application.yml:
server:<br> servlet:<br> context-path: /myapp
配置后,原 @GetMapping("/user") 接口将变为 http://localhost:8080/myapp/user。
编程方式自定义(适合动态或条件化配置)
可通过实现 WebServerFactoryCustomizer 接口,在运行时调整:
@Component
public class CustomTomcatConfig implements WebServerFactoryCustomizer<tomcatservletwebserverfactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.setPort(9090);
factory.setContextPath("/backend");
}
}</tomcatservletwebserverfactory>
这种方式优先级高于配置文件,适合测试环境切换、多租户隔离等场景。
注意点与常见问题
- 端口为
0表示随机分配,常用于单元测试(如@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)) -
server.servlet.context-path不影响静态资源映射规则,但会影响所有 Controller 映射的前置路径 - 若同时使用 Actuator,其端点也会受
context-path影响;如需独立管理,可用management.server.servlet.context-path - 配置写错位置(如误写成
spring.server.port)会导致不生效,务必确认前缀是server.
不复杂但容易忽略细节,配对检查配置项名称和层级即可稳定生效。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











