天天看点

profile功能

  • 配置文件激活
当我们的项目部署到线上之后,部署环境和开发环境不同,这时可写多个配置文件,在不同的环境指定不同的配置文件

例如用于默认,生产,测试环境的配置文件:
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条件装配功能
# 当我们在类或配置类上使用该注解,表示在哪种环境下生效:@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();
    }
}      
  • profile分组
# 我们可在默认配置文件中将多个配置文件分为一组,这样即可同时激活多个环境
# 如下为默认配置文件,配置如下
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           

继续阅读