• SpringBoot中使用Spring profile进行配置【谨慎使用,参见SpringBoot 2.4.0发布文档】


    Spring profile是一种条件化的配置,在运行时,Spring根据哪些profile处于激活状态,可以使用或忽略不同的bean、配置类和配置属性。

    ⒈,定义方式

      1.基于约定创建另外一个配置文件

        文件名称要遵守如下约定:  application-{profile名称}.yml   or   application-{profile名称}.properties,然后,我们就可以在文件中声明适用于该profile的配置属性了。

        application-prod.yml

    spring:
      datasource:
        url: jdbc:mysql://localhost/coreqi
        username: fanqi
        password: coreqi
    logging:
      level:
        cn.coreqi: WARN

      2.将特定profile的属性和非profile的属性都放到application.yml中【仅适用于YAML配置】

      将特定profile的属性和非profile的属性都放到application.yml中,它们之间使用3个中划线进行分割,并且使用spring.profiles属性来命名profile。

    logging:
      level:
        cn.coreqi: DEBUG  #没有指定spring.profiles则这些属性是所有profile通用的
        
    ---
    
    spring:
      profiles: prod  #指定了spirng.profiles则这些属性仅属于当前profile
      datasource:
        url: jdbc:mysql://localhost/coreqi
        username: fanqi
        password: coreqi
    logging:
      level:
        cn.coreqi: WARN

    ⒉激活profile

      1,在配置文件中激活【开发中常用】

    spring:
      profiles:
        active:   #可以激活一个,也可以激活多个
          - prod
          - audit
          - ha

      2,通过环境变量激活【生产环境中较常用】

    export SPRING_PROFILES_ACTIVE=prod,audit,ha

      3,如果以jar或war部署在servlet容器中,可以以命令行参数的形式设置激活的profile

    java -jar coreqi.jar --spring.profiles.active=prod,audit,ha

      *如果我们将Spring应用部署在Cloud Foundry中,将会自动激活一个名为cloud的profile。如果生产环境是Cloud Foundry,那么可以将生产环境相关的属性放到cloud profile下。

    ⒊通过profile条件化的创建bean

      默认情况下,无论哪个profile处于激活状态,Java配置类中所声明的Bean都将被创建。

      通过@Profile注解,可以将某些Bean声明为 仅在特定的profile为激活的状态下才会被创建。

        @Bean
        @Profile("dev") //在dev模式下启动
        public CommandLineRunner dataLoader(){
        ...
        }
    
        @Bean
        @Profile({"dev","qa"})  //在dev or qa模式下启动
        public CommandLineRunner dataLoader(){
        ...
        }
    
        @Bean
        @Profile("!prod")   //在非prod模式下启动
        public CommandLineRunner dataLoader(){
        ...
        }

      @Profile注解,同时可以使用到配置类上。

    @Configuration
    @Profile({"!prod","!qa"})
    public class DevConfig {
        ...
    }
  • 相关阅读:
    bzoj1797
    bzoj1266
    bzoj1497
    bzoj1412
    bzoj3156
    JSOI2014第三轮总结
    bzoj1855
    bzoj1044
    codeforces 371D
    codeforces 371B
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/14048773.html
Copyright © 2020-2023  润新知