Spring Boot 多环境配置实战:Properties、YML 及命令行参数详解

Elena
Elena
发布时间:2026-10-15| 6人浏览过
原创

在开发项目时,同一套程序通常需要在开发、测试和生产等多个环境中发布。各环境的数据库地址、Redis 缓存服务及服务器端口等配置往往不同。为了避免在打包时频繁修改配置文件导致错误,Spring Boot 提供了基于 Profile 的多环境配置机制,允许通过文件名区分或激活特定配置,并在启动时动态指定运行环境。

Profile 多环境配置基础

Spring Boot 的基本思路是通过配置多份不同环境的文件,再根据启动指令读取对应内容。主配置文件通常命名为 application.properties 或 application.yml,而各环境的配置文件需遵循 application-{profile}.properties 的命名规范。

第1步:创建环境专属配置文件

在不同环境下(如开发 dev、测试 test、生产 prod),分别创建对应的属性文件。例如:

  • application-dev.properties:开发环境配置
  • application-test.properties:测试环境配置
  • application-prod.properties:生产环境配置

在这些文件中设置特定的参数,例如:

# application-dev.properties
server.port=8081
branch=dev
# application-prod.properties
server.port=8083
branch=prod

第2步:在主文件中指定激活环境

在默认的 application.properties 中,通过 spring.profiles.active 属性指定默认加载的环境配置文件。若未在此处指定,则需在启动时通过命令行参数指定。

# application.properties
spring.profiles.active=dev

上述配置意味着如果不进行特殊干预,系统将默认加载 application-dev.properties 中的参数。

第3步:验证配置生效

可以通过一个简单的 Controller 读取配置并返回结果来验证当前生效的环境变量。

@Controller
@RequestMapping("/test")
public class TestController {
    @Value("${branch}")
    private String branch;

    @ResponseBody
    @GetMapping("/branch")
    public String getBranch() {
        return branch;
    }
}

启动项目后,访问该接口即可看到当前生效的配置值。在本地 IDE 直接运行时,通常遵循主配置文件指定的默认值:

运行时环境与命令行参数切换

在实际部署中,最灵活的方式是在打好包后,不修改 jar 包内的配置文件,而是在启动时通过命令行参数指定目标环境。这避免了为每个环境单独打包的繁琐操作。

第4步:使用 Jar 包启动时指定参数

使用 java -jar 命令时,加入 --spring.profiles.active=环境标识 参数。

假设项目名为 springboot-profile-0.0.1-SNAPSHOT.jar,若要切换至测试环境:

java -jar springboot-profile-0.0.1-SNAPSHOT.jar --spring.profiles.active=test

执行该命令后,系统将优先加载 application-test.properties 的内容,覆盖默认值。此时的控制台输出确认了测试环境的生效:,且接口返回值也将反映测试环境的特征:

YML 文件的多文档块切换配置

除了 Properties 文件,YAML (.yml) 文件也是常用的配置形式。YML 支持通过三个短横线 --- 分隔多个文档块,实现同一个文件中定义多种环境配置的集成切换。

第5步:编写包含多环境的 YML 文件

在一个 application.yml 文件中,首先定义通用的激活规则,随后使用 --- 分隔各个具体环境的配置块。

# 主配置:设定默认激活的开发环境
spring:
  profiles:
    active:
    - dev

---
# 插入开发环境配置
spring:
  profiles: dev
server:
  port: 8888

---
# 插入生产环境配置
spring:
  profiles: pro
server:
  port: 9999

这种方式的优点在于所有环境的配置集中在一个逻辑文件中,便于维护版本控制,但需注意缩进和 --- 的使用规范。

高级排错:无配置文件时的运行方式

在某些特殊场景下,可能需要完全移除 application.properties 或 application.yml 中的激活声明,转而依赖外部注入或 IDE 的运行配置来动态决定运行环境。

第6步:通过 IDE 运行参数指定(适用于本地调试)

如果主配置文件中没有显式指定 spring.profiles.active,可以在 IDE 中右键点击项目,选择 Run Configurations 或在 VM options 中添加系统属性。

进入虚拟机参数设置界面:,在 VM arguments 输入框中配置:

-Dspring.profiles.active=pro

这样即使在代码或配置文件中未设置,JVM 启动时也会读取该环境变量。

第7步:去除主配置文件后的 Jar 包独立运行

如果希望彻底解耦配置文件与启动逻辑,可以删除主配置文件,仅保留独立的 application-dev.properties 和 application-prod.properties。此时必须依靠启动命令或外部环境变量来告知应用该读取哪个文件,否则应用可能因找不到任何激活配置而无法正确启动某些依赖特定配置的服务(如数据源)。正确的做法是在无主配置文件的情况下,严格执行如下启动命令:

以上就是 Spring Boot Profile 多环境配置的详细内容,更多关于 Spring Boot 配置优化与环境管理的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。