当我们的项目部署到线上之后,部署环境和开发环境不同,这时可写多个配置文件,在不同的环境指定不同的配置文件
例如用于默认,生产,测试环境的配置文件:
application.properties application-prod.yaml application-test.yaml
我们在默认配置文件中指定使用哪个配置文件,application.properties中配置:spring.profiles.active=prod # 这里指定了生产环境
在默认配置文件中未指定则使用默认环境
若默认配置和生产配置同时指定了端口号,且默认配置中指定了生产配置环境,这时默认配置和生产配置同时生效,且生产配置优先
当我们的项目打成jar包后,在cmd使用命令激活:java -jar jar名称 --配置文件中的属性
# 例如这里激活该jar包,指定使用prod环境,同时也可以指定其他属性
java -jar xxx.jar --spring.profiles.active=prod --person.name=haha
在cmd使用命令可修改任意配置,且使用命令修改的属性配置优先级高于配置文件配置;也即是说,在配置文件配置后,最后在命令行配置,以命令行的配置为准
# 当我们在类或配置类上使用该注解,表示在哪种环境下生效:@Profile("prod")
# 案例1
@Profile("test")
@Component
@ConfigurationProperties("person")
@Data
public class Worker implements Person {
private String name;
private Integer age;
}
# 案例2
@Profile(value = {"prod","default"})
@Component
@ConfigurationProperties("person")
@Data
public class Boss implements Person {
private String name;
private Integer age;
}
@Configuration
public class MyConfig {
@Profile("prod")
@Bean
public Color red(){
return new Color();
}
@Profile("test")
@Bean
public Color green(){
return new Color();
}
}
# 我们可在默认配置文件中将多个配置文件分为一组,这样即可同时激活多个环境
# 如下为默认配置文件,配置如下
spring.profiles.active=myprod # 将以下两个环境分为一组,再激活这个组
spring.profiles.group.myprod[0]=ppd
spring.profiles.group.myprod[0]=test
spring.profiles.group.myprod[1]=prod
# 这时打包的jar会使用ppd和test环境
# 方式2,使用命令激活当前这个组
--spring.profiles.active=myprod