惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
MyScale Blog
MyScale Blog
A
About on SuperTechFans
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
博客园 - 【当耐特】
The Cloudflare Blog
F
Fortinet All Blogs
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
罗磊的独立博客
量子位
有赞技术团队
有赞技术团队
V
V2EX
Engineering at Meta
Engineering at Meta

博客园 - z5337

【转】禁用 Chrome 浏览器的自动更新 【转】Avalonia 12 最小信创项目模板 【转】Avalonia 周边介绍 【转】国产操作系统对 Avalonia 的支持情况 【转】国产操作系统优化篇 [openKylin] 入门知识点 【转】国产操作系统优化篇 [openKylin] 第一步 - Qt + VMware 【转】p2055dn 打印机配置 IP 地址 【转】Windows 锁屏后屏幕不熄灭排查 【转】既然 java 8 因为组件容易被攻击,.net core 也有大量第三方组件,是不是也容易出问题 【转】最小 web api 学习 【转】使用记事本区分图片格式 【转】蓝牙耳机的播放控制 【转】JoyToKey 键位映射 【转】[C#] 要从接口取时间,单个订单查询和批量查询,写一个接口还是两个接口合适? 【转】[C#] Web API 中的常见层次 【转】[C#] .net core 项目的目标框架设置 【转】[C#] 项目里的配置文件与选项对比 【转】[C#] GlobalUsing 的使用 【转】[.net core] 项目的 Windows 服务器部署 【转】《三字经》全文 【转】PO、DO、VO、BO、DTO、DAO、POJO 的区别 【转】[web]怎么移除网页最上层的水印 【转】[C#] 30+个.NET开发最佳实践 【转】[C#] WPF 保留选中的高亮色 【转】Windows Server 系统的桌面上显示 此电脑 图标 【转】[C#] 参数前加 in 的作用 【转】[C#] Enum 的 Flags 特性 【转】[C#] Tuples 元组介绍 【转】[C#] Record 的使用 【转】[C#] 预处理指令
【转】[IDEA] 调试时怎么判断使用哪个配置文件
z5337 · 2025-09-18 · via 博客园 - z5337

转自:豆包

在 IntelliJ IDEA 中调试 Spring 项目时,如果发现加载的配置文件不是预期的,通常是由于配置文件加载优先级、启动参数或项目结构问题导致的。以下是具体原因和解决方法:

Spring 加载配置文件有固定的优先级顺序,可能会覆盖你认为 “指定” 的文件:

  • 优先级从高到低:

    1. 命令行参数(如 --spring.profiles.active=dev
    2. 系统环境变量
    3. application-{profile}.properties/yaml(指定环境的配置)
    4. application.properties/yaml(默认配置)
    5. 类路径下的其他配置(如 spring-boot-starter 内置配置)
  • 问题场景:
    若你想加载 application-dev.properties,但项目中同时存在 application.properties 且其中指定了 spring.profiles.active=prod,则会优先加载 prod 环境的配置。

最常见的问题是启动配置中未正确指定环境或配置文件路径。

解决步骤:

  1. 打开启动配置:
    顶部菜单栏 → Run > Edit Configurations...

  2. 找到你的 Spring Boot 启动项,检查以下参数:

    • Active profiles:
      在 Environment > Active profiles 中填写你需要的环境(如 dev),确保与目标配置文件 application-{dev}.properties 对应。
    • Program arguments:
      若通过命令行参数指定配置,需在 Program arguments 中添加:
      --spring.profiles.active=dev
      或指定自定义配置文件路径:
      --spring.config.location=classpath:/custom-config/
    • VM options:
      也可通过 VM 参数指定:
      -Dspring.profiles.active=dev
  3. 确保配置唯一:
    避免同时在 Active profilesProgram argumentsVM options 中重复设置,以防冲突。

Spring 默认扫描以下位置的配置文件(优先级从高到低):

  1. 项目根目录下的 config/ 文件夹(./config/
  2. 项目根目录(./
  3. 类路径(src/main/resources/)下的 config/ 文件夹
  4. 类路径根目录(src/main/resources/
  • 问题场景:
    若 src/main/resources/ 和 ./config/ 下都有 application-dev.properties,则 ./config/ 中的会被优先加载,可能与预期不符。

  • 解决:
    统一配置文件存放位置(推荐 src/main/resources/),删除重复或冗余的配置文件。

若代码中使用 @PropertySource 手动指定了配置文件,会额外加载该文件,可能覆盖默认配置:

@Configuration
@PropertySource("classpath:custom.properties")  
  • 确认该注解是否引入了非预期的配置文件,或路径是否正确(注意 classpath 路径是否匹配实际文件位置)。

IDEA 有时会因缓存问题导致配置未及时更新: 

  1. 清理项目缓存:File > Invalidate Caches... → 勾选缓存选项 → Invalidate and Restart
  2. 重新构建项目:Build > Rebuild Project

若以上步骤仍未解决,可通过代码打印当前激活的环境和配置文件路径,辅助排查:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigController {
    @Autowired
    private Environment env;

    @GetMapping("/config-info")
    public String getConfigInfo() {
         

启动项目后访问 /config-info,查看实际激活的环境和加载的配置文件,与预期对比差异。

核心解决思路是:

  1. 通过 IDEA 启动配置明确指定目标环境(Active profiles 或命令行参数);
  2. 检查配置文件的位置、命名和优先级,避免冲突;
  3. 验证实际加载的配置,定位差异点。

按照以上步骤逐步排查,通常能解决 “配置文件未按预期加载” 的问题。