• spring.profiles.active和spring.profiles.include的使用及区别说明


    转自:

    spring.profiles.active和spring.profiles.include的使用及区别说明

    下文笔者讲述spring.profiles.active和spring.profiles.include的区别简介说明,如下所示

    我们都知道,在日常开发中,开发|测试|生产环境都拥有不同的配置信息
     如:
       jdbc地址、ip、端口等
    此时为了避免每次都修改全部信息,我们则可以采用以上的属性处理此类异常
    

    spring.profiles.active属性

    例:
     配置文件,可使用以下方式定义
       application-${profile}.properties 
    开发环境配置文件:application-dev.properties
    测试环境配置文件:application-test.properties
    生产环境配置文件:application-prod.properties
    
    application.properties配置
       则可以根据不同的属性切换到不同的配置文件
    spring.profiles.active,属性值为${profile}。
    
    spring.profiles.active=dev:用application-dev.properties
    spring.profiles.active=test:启用application-test.properties
    spring.profiles.active=prod:启用application-prod.properties
    

    例:

    java -jar xx.jar --spring.profiles.active=test
    注意事项:
       此命令的优先级最高
       当程序启动时,加入此环境变量时
       则会自动启用 application-test.properties配置文件
    

    spring.profiles.include属性

    当我们需在开发环境,再次细分配置信息,如:
    application-dev1.properties中存储jdbc信息
    application-dev2.properties中存储ip、端口信息
    即在启用application-dev.properties开发环境(主)配置文件时
       同时启用application-dev1.properties和application-dev2.propertie。
       此时可使用spring.profiles.include属性
       同时启用其他的profile
    

    配置方法

    当properties文件:
       spring.profiles.include=dev1,dev2
    yaml文件配置方法
    spring.profiles.include:
    -dev1
    -dev2
    或
    spring.profiles.include:dev1,dev2
     

    spring.profiles.active和spring.profiles.include的使用及区别

    配置方式不同

    配置方式一:
      application.properties中,配置spring.profiles.active=dev的同时指定spring.profiles.include=dev1,dev2
    配置方式二:
       application.properties中,配置spring.profiles.active=dev,application-dev.properties中
       配置spring.profiles.include=dev1,dev2
       使用application-dev.properties时自动就激活了dev1、dev2两个文件,不用再次指定
    

    区别

    第一种方式启动时
       控制台打印The following profiles are active:dev1,dev2,dev
    第二种方式启动时
       控制台打印The following profiles are active:dev, dev1,dev2
    按照顺序
       后面的覆盖前面
     

    例:

    application-dev.properties配置

    my.name=dev
    my.height=190
    
    #同时触发dev1和dev2的激活
    spring.profiles.include=dev1,dev2
     
    application-dev1.properties配置:
    
    my.name=dev1
    my.height=191
     
    application-dev2.properties配置:
    
    my.name=dev2
    #my.height=192
     
    application-prod.properties配置:
    
    my.name=prod
    my.height=182
     
    application-prod1.properties配置:
    
    my.name=prod1
    my.height=188
     
    application-prod2.properties配置:
    
    my.name=prod2
    my.height=182
     
    测试一:
    在application.properties配置文件中,指定
    
    #激活的是开发环境配置文件
    spring.profiles.active=dev
     
    启动时不指定参数
    结果:
      打印的内容为:姓名:dev2,身高:191
    
    ----具体原因如下所示----
    先加载application.properties
    再加载application-dev.properties,
    my.name=dev
    my.height=190
    加载application-dev1.properties,
    my.name=dev1
    my.height=191
    加载application-dev2.properties,
    my.name=dev2
    my.height=191
     
    测试二:
      在测试一的基础上,启动时指定参数:–spring.profiles.active=prod
      优先级最高,会使用生产环境配置文件
    以上配置信息,将输出以下信息
    打印的内容为:姓名:prod,身高:182
    
    测试三:
    在application.properties配置文件中,指定
    
    #激活的是生产环境配置文件
    spring.profiles.active=prod
    #同时触发prod1和prod2的激活
    spring.profiles.include=prod1
     
    启动时不指定参数
    ---运行以上信息,将输出以下信息
    The following profiles are active: prod1,prod2,prod
    打印的内容为:姓名:prod,身高:182
  • 相关阅读:
    Docker知识总结 (三) Docker 常用命令
    使用 GitHub Action 自动更新 Sealos 集群的应用镜像
    CMD脚本实战教程
    神经网络算法有哪些模型,神经网络算法模型resnet
    什么是AI管道和MLOps?
    springboot 使用 microsoft SQL server 报错
    “蔚来杯“2022牛客暑期多校训练营8 补题题解(F)
    【码蹄集新手村600题】判断一个数字是否为完全平方数
    MySQL配置了主从,重启步骤
    # Spring Cloud的新潮流:服务网格与无缝通信
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127583154