spring中yml配置上下文与tomcat等外部容器不一致问题

结论:外部优先级大于内部

在 application.yml 中配置了:

yaml 复制代码
server:
  port: 8080
  servlet:
    context-path: /demo

这表示你的 Spring Boot 应用的上下文路径 (context-path)是 /demo,即访问你的服务时,URL 必须以 /demo 开头,比如:

复制代码
http://localhost:8080/demo/xxx

部署时 "path": "/DemoApplication"

  • 在部署(比如 Tomcat、容器、云平台等)时,指定了 "path": "/DemoApplication",这是外部容器的 context-path 配置。
  • 例如,在 Tomcat 的 server.xml 或者云平台的部署配置中,可能会有 <Context path="/DemoApplication" .../> 或类似的参数。

谁生效?

  • 外部容器优先级更高 :如果你用外部容器(如 Tomcat、WebSphere)部署 Spring Boot 的 war 包,外部容器的 context-path(如 /DemoApplication)会覆盖 Spring Boot 内部的 application.yml 配置。
  • 内嵌容器生效 :如果你用 Spring Boot 的 jar 包(内嵌 Tomcat),则只会用 application.yml 里的 context-path 配置(如 /demo)。

访问路径举例

  • 内嵌 Tomcat(jar 方式)
    访问路径为:http://localhost:8080/demo/xxx
  • 外部 Tomcat(war 方式,配置了 path=/DemoApplication)
    访问路径为:http://localhost:8080/DemoApplication/xxx

总结

  • 谁生效?
    • 用 jar 包启动,application.yml 的 context-path 生效。
    • 用 war 包部署到外部容器,容器的 context-path 配置生效,application.yml 的 context-path 可能会被覆盖。
  • 建议
    • 不要同时在外部容器和 application.yml 配置 context-path,容易混淆。
    • 推荐统一在一个地方配置,优先用外部容器的 context-path。

如需进一步区分或排查实际生效路径,可以访问 / 看实际跳转到哪个路径,或查看启动日志中的 context-path 信息。

相关推荐
桃西西呀20 分钟前
Spring AI Alibaba 之二:Spring AI 底座与原子抽象一笔带过,看清 SAA 在之上加了什么编排
人工智能·spring·llm
写后端的胖头鱼1 小时前
一文详解Spring 事务失效场景
java·spring·事务·transactional·事务传播机制
Q26433650231 小时前
【有源码】基于Spring Boot和Vue的在线考试与交流系统-教育信息化背景下在线考试与交流一体化平台
java·vue.js·spring boot·mysql·spring·毕业设计·课程设计
会编程的吕洞宾2 小时前
Spring AI 2.0 会话记忆实战,让 AI 助手记住每一次对话
java·人工智能·spring
小宋10212 小时前
Agent 工具升级如何不破坏线上:Tool Schema 版本兼容与契约测试
java·人工智能·后端·spring
EatFan2 小时前
2026 后端 AI 集成三条落地路径:Spring AI 2.0、MCP 协议与旁路服务怎么选
java·人工智能·spring boot·spring·大模型·spring ai·mcp
桃西西呀2 小时前
Spring AI Alibaba 之一:整体概览与分层架构,看清它在 Spring AI 之上到底加了什么
人工智能·spring·llm
学编程就要猛3 小时前
Spring AI Alibaba(上)
java·人工智能·spring·springaialibaba
鱼宵3 小时前
Spring AI 工具调用:@Tool 让大模型自己查订单查库存
人工智能·spring·工具调用·functioncalling·springai
字节渡客13 小时前
Redis键明明过期了,业务还在读到旧数据
数据库·redis·spring