当前位置: 首页 > news >正文

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

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

application.yml 中配置了:

server:port: 8080servlet: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.ymlcontext-path 生效。
    • 用 war 包部署到外部容器,容器的 context-path 配置生效,application.ymlcontext-path 可能会被覆盖。
  • 建议
    • 不要同时在外部容器和 application.yml 配置 context-path,容易混淆。
    • 推荐统一在一个地方配置,优先用外部容器的 context-path。

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

相关文章:

  • web常见的攻击方式
  • HJ10 字符个数统计【牛客网】
  • 细说STM32单片机FreeRTOS任务通知及其应用实例
  • unity 第一人称控制器
  • C语言之 比特(bit)、字节(Byte)、字(Word)、整数(Int)
  • 学习黑客PowerShell的历史、架构与工作原理深度解析
  • ## Docker 中 Elasticsearch 启动失败:日志文件权限问题排查与解决
  • 什么是仓储管理,仓储管理怎么做
  • 【Android构建系统】Soong构建系统,通过.bp + .go定制编译
  • 【成品设计】基于STM32的的宠物看护系统
  • MySQL - 如何突破单库性能瓶颈
  • Qt读取Excel文件的技术实现与最佳实践
  • MySQL替换瀚高数据库报错: TO_DAYS()不存在(APP)
  • DNS服务搭建
  • 基于vue框架的东莞市二手相机交易管理系统5yz0u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 家庭数字生态构建实战:基于飞牛fnOS的智能家居数据中台搭建全流程解析
  • 云原生环境下的事件驱动架构:理念、优势与落地实践
  • 架构演变 -单体到云原生
  • RK3568解码1080P视频时遇到系统崩溃内核挂掉的解决方案
  • 云原生攻防1(基础介绍)
  • 国家发改委:大部分稳就业稳经济政策将在6月底前落地
  • 多所院校高规格召开考研动员会,有学院考研报名率达84%
  • 俄乌上周在土耳其直接谈判,外交部回应
  • 著名文学评论家、原伊犁师范学院院长吴孝成逝世
  • 19国入境团抵沪并游玩,老外震惊:“怎么能有这么多人?”
  • 玉林一河段出现十年最大洪水,一村民被冲走遇难