1 Profile环境功能
Profile功能:为了方便多环境适配,springboot简化了profile功能,使用profile可以实现快速的切换环境。
1.1 profile使用
(1)在resources文件夹下创建多个application-xxx.yaml配置文件,分别代表不同的生产、测试等环境。
application-test.yml:测试环境的配置文件
name: test-张三
application-produce.yml:生产环境的配置文件
name: produce-张三
(2)只有默认配置文件(application.yaml或application.properties)会自动生效,其他环境的配置文件想要生效,需要在默认配置文件中激活。另外,如果已经激活的其他环境的配置文件和默认配置文件冲突,以已经激活的其他环境的配置文件为准。
application.yml: 默认配置文件
spring:
profiles:
active: produce #表示激活生产环境的配置文件
除了在默认配置文件中激活其他环境的配置文件,还可以在命令行中激活,例如 java -jar xxx.jar --spring.profiles.active=test,在命令行中可以修改配置文件的任意值且以命令行优先
(3)还可以使用@Profile(“xxx”)注解标注在类、方法上完成条件装配,表示在指定环境下该类、方法下的注解才会生效
例如@Profile(“produce”)表示是produce环境时下面的才生效。
@Profile("produce")
@ConfigurationProperties("person")
@Component
@Data
public class Boss implements Person {
String name;
Integer age;
}
1.2 profile规则
不带环境标识的配置文件(application.yml、application.properties)任何时候都会加载;
在不带环境标识的配置文件中指定要激活的环境配置文件;
2 外部化配置
通过外部的配置资源实现与代码的相互配合,来避免硬编码
2.1 外部配置源
常用外部配置源有:properties文件、yaml文件、环境变量、命令行参数。
2.2 配置文件查找位置
配置文件查找位置:后面的配置文件可以覆盖前面的同名配置项
- classpath根路径
- classpath根路径下的config目录
- jar包所在的目录
- jar包所在目录下的config目录
- config目录的直接子目录