Profiles具备环境隔离能力,可以将我们的项目快速切换开发、测试、生产环境
我们的使用步骤也很简单:
1. 标识环境:指定哪些组件、配置在哪个环境生效
2. 切换环境:这个环境对应的所有组件和配置就应该生效
接下来就进行详细的介绍
1. 使用
1.1 指定环境
- Spring Profiles 提供一种隔离配置的方式,使其仅在特定环境生效;
- 任何
@Component
,@Configuration
或@ConfigurationProperties
可以使用@Profile
标记,来指定何时被加载。【容器中的组件都可以被@Profile
标记】
1.2 环境激活
-
配置激活指定环境;
spring.profiles.active=dev
-
也可以使用命令行激活。–spring.profiles.active=dev
-
还可以配置默认环境; 不标注@Profile 的组件永远都存在。
a. 如果不改变默认环境,默认的默认环境叫default
b. 我们可以通过spring.profiles.default=test
对默认环境进行配置
1.3 注意
-
spring.profiles.active
和spring.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