SpringBoot -- Profiles

发布于:2024-04-02 ⋅ 阅读:(66) ⋅ 点赞:(0)
Profiles具备环境隔离能力,可以将我们的项目快速切换开发、测试、生产环境
我们的使用步骤也很简单:
1. 标识环境:指定哪些组件、配置在哪个环境生效
2. 切换环境:这个环境对应的所有组件和配置就应该生效
接下来就进行详细的介绍

1. 使用

1.1 指定环境

  • Spring Profiles 提供一种隔离配置的方式,使其仅在特定环境生效;
  • 任何@Component, @Configuration@ConfigurationProperties 可以使用 @Profile 标记,来指定何时被加载。【容器中的组件都可以被 @Profile标记】

1.2 环境激活

  1. 配置激活指定环境;

      spring.profiles.active=dev
    
  2. 也可以使用命令行激活。–spring.profiles.active=dev

  3. 还可以配置默认环境; 不标注@Profile 的组件永远都存在。
    a. 如果不改变默认环境,默认的默认环境叫default
    b. 我们可以通过spring.profiles.default=test对默认环境进行配置

1.3 注意

  • spring.profiles.activespring.profiles.default 只能用到 无 profile 的文件中,如果在application-dev.yaml中编写就是无效的。

    其实这一点很好理解,只有将环境切换为dev后,application-dev.yaml才会生效。如果在application-dev.yaml中才将dev环境激活,那么,application-dev.yaml生效后会激活dev,但激活了dev后application-dev.yaml才会生效,两者互相矛盾,就好像死锁了,永远也无法生效。

  • 也可以额外添加生效文件,而不是激活替换。比如:
    spring.profiles.include[0]=common
    spring.profiles.include[1]=local

  • 生效的环境 = 激活的环境/默认环境 + 包含的环境

  • 项目里面这么用
    ○ 基础的配置mybatis、log、xxx:写到包含环境中,因为包含环境永远生效
    ○ 需要动态切换变化的 db、redis:写到激活的环境中

2. Profile 分组

创建prod组,指定包含db和mq配置

spring.profiles.group.prod[0]=db
spring.profiles.group.prod[1]=mq

使用 spring.profiles.active=prod ,就会激活prod,db,mq配置文件

2.3 Profile 配置文件

  • application-{profile}.properties可以作为指定环境的配置文件。
  • 激活这个环境,配置就会生效。最终生效的所有配置是
    • application.properties:主配置文件,任意时候都生效
    • application-{profile}.properties:指定环境配置文件,激活指定环境生效
  • profile优先级 > application

网站公告

今日签到

点亮在社区的每一天
去签到