1. spring.profiles (或文件名中的 ?):定义配置的名称

这是声明一段配置属于哪个 Profile。

  • 在同一个 application.yml 中:使用 spring.profiles 键来为一个配置段打上标签。

    yaml

    spring:
      profiles: dev # 【定义】这个配置段的名称是‘dev’
    server:
      port: 9090
  • 在独立的配置文件中:通过文件命名规则 application-{profile}.yml 来定义。

    • 文件 application-prod.yml -> 【定义】这个文件里的所有配置都属于 prod Profile。

    • 文件 application-database.yml -> 【定义】这个文件里的所有配置都属于 database Profile。

关键: 这只是在“准备”配置,它们此时并不会自动生效


2. spring.profiles.active激活指定的配置名称

这是命令Spring去加载并使用那些已被定义的配置。

  • 作用:告诉Spring Boot:“请去找到所有名为 [值] 的配置(无论是在主文件里的段还是独立文件),并把它们激活,与默认配置合并。”

  • 示例

    • spring.profiles.active=dev -> 【激活】所有定义名为 dev 的配置。

    • spring.profiles.active=prod,database -> 【激活】所有定义名为 prod 和 database 的配置(可以同时激活多个,用逗分隔)。


工作流程类比

您可以把它想象成一个电视台电视遥控器

  1. 电视台 (spring.profiles / 文件名)

    • 各个电视台(如CCTV-1, CCTV-5)一直在播放不同的节目(不同的配置)。

    • 它们定义了自己是谁(spring.profiles: cctv1)。

  2. 遥控器 (spring.profiles.active)

    • 你手里的遥控器决定激活哪个电视台的信号到你的电视机上。

    • 你按下“CCTV-5”(spring.profiles.active=cctv5),你的电视就播放CCTV-5的节目。

  3. 默认频道 (application.yml)

    • 即使你不按遥控器,电视也有一个默认频道(默认配置)在播放。

总结对比表

特性 配置项/文件 作用 类比
定义/声明 spring.profiles (在YAML段中) 声明这段配置属于哪个Profile 电视台的台标和频道
application-{profile}.yml (文件名) 声明这个文件里的配置属于哪个Profile
激活/使用 spring.profiles.active 命令Spring去启用哪些已定义的Profile 电视遥控器

所以,您的两句话完美地概括了整个过程:

  • spring.profiles=? 是用来定义当前配置的名称。

  • spring.profiles.active=? 是用来指定要激活的配置名称。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐