You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot多Profile YML配置异常:激活prod却加载dev的Mongo URI

问题分析与解决方案

从你的日志和配置文件来看,核心问题是application.yml的YAML格式错误——虽然日志显示prod Profile已成功激活,但因为配置的层级结构写错了,导致prod环境的MongoDB配置根本没被Spring Boot正确读取,最终 fallback 使用了dev环境的配置。

错误配置的核心问题

你原配置里的每个Profile块都犯了同一个错误:把spring: profiles: xxx和对应的数据库配置拆成了两个独立的顶级spring节点,而不是将数据库配置嵌套在当前Profile的spring节点下。YAML是严格依赖缩进和层级关系的,这种写法会让Spring Boot无法识别数据库配置属于哪个Profile,最终导致prod的配置失效。

你原来的错误配置:

spring: profiles: prod
spring: data: mongodb: uri: ${MONGODB_URI}
---
spring: profiles: dev
spring: data: mongodb: uri: mongodb://admin:password@localhost:27017/mobsters

修正后的正确配置

把每个Profile的所有配置都放在同一个spring节点下,保持正确的缩进层级:

spring:
  profiles: prod
  data:
    mongodb:
      uri: ${MONGODB_URI}
---
spring:
  profiles: dev
  data:
    mongodb:
      uri: mongodb://admin:password@localhost:27017/mobsters

这样修改后,当激活prod Profile时,Spring Boot会正确读取该块下的spring.data.mongodb.uri配置,不会再读取dev块的内容。

额外验证建议

  1. 启动应用时添加--debug参数,查看配置加载的详细日志,确认prod环境的MongoDB URI是否被正确加载;
  2. 检查环境变量MONGODB_URI是否已正确设置,避免出现配置加载后变量为空的连接问题。

内容的提问来源于stack exchange,提问作者Adrian Elder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:17:15