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

Spring Boot中application-{profile}.properties的正确存放路径

Spring Boot多环境Profile配置的正确组织方案

首先明确核心原则:生产构建包中只允许存在生产环境必需的配置,所有非生产环境配置要么隔离在测试专属路径,要么在构建环节被排除,要么放在构建包外部,绝对不能随生产包发布。

不同环境配置的存放规则如下:

  • application-test.properties:直接放在src/test/resources目录即可。这个目录是构建工具默认的测试资源目录,内容仅在执行单元测试、集成测试阶段被加载,不会进入正式构建产物,完全满足测试配置隔离的要求。
  • application-dev.properties:推荐两种经过验证的存放方式,都不会将开发配置带入生产包:
    1. 本地外部化存放:将配置文件放在本地项目根目录的config子文件夹下。Spring Boot启动时会按优先级自动扫描项目根目录/config、项目根目录下的配置文件,本地激活dev profile时可以正常加载配置。你只需要把这个/config目录加入.gitignore,配置既不会提交到代码仓库,也不会被Maven/Gradle打进部署包,是个人本地开发最简便的方案。
    2. 构建时过滤引入:如果团队需要共享通用的开发环境基础配置,可以把通用dev配置存放到项目独立的构建配置目录(比如项目根目录下profile-config/dev),配合构建工具的资源插件做规则控制:构建开发调试包时才把dev配置拷贝到资源目录,构建生产包时直接排除所有dev、test相关的profile配置文件。
  • application-prod.properties:如果配置中没有敏感信息,可以放在src/main/resources目录,但构建生产包时必须排除所有非prod的profile配置;如果包含数据库密码、接口密钥这类敏感信息,不要存在代码仓库中,推荐部署时放到生产服务器的专用配置目录,启动时通过--spring.config.location参数指定配置路径,或者通过环境变量、配置中心注入敏感参数,避免敏感信息泄露。

注意:不要抱有「配置不激活就不会有问题」的侥幸心理。打包带入的dev/test配置不仅会增加包体积,一旦生产环境启动参数配置错误误激活非生产profile,会直接导致服务连接开发/测试资源,引发线上故障。

如果用Maven做构建工具,可以直接在pom.xml中添加如下配置,生产构建时自动排除dev、test环境的配置文件:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>application-dev*.properties</exclude>
                <exclude>application-test*.properties</exclude>
            </excludes>
        </resource>
    </resources>
</build>

如果团队需要统一开发配置的模板,可以在src/main/resources下存放一个application-dev.example.properties示例文件,里面只放配置项的占位说明,不包含真实的本地连接信息,开发者拉取代码后自行拷贝生成本地的dev配置放到外部目录即可。

内容的提问来源于stack exchange,提问作者Erik Pragt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:30:49