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

  • 业务场景
  • 优化方式
    • spring.profiles.active属性
      • 启动时指定:
    • spring.profiles.include属性
      • 配置方法:
      • 配置的位置和区别:
  • 用示例来使用和区分
    • 测试一:
    • 测试二:
    • 测试三:

业务场景

一套程序可能会被部署到不同的环境。开发、测试、生产环境有不同的配置信息,包括jdbc地址、ip、端口等。如果在同一个配置文件中,每次部署去改配置,会非常麻烦且容易出错。

优化方式

spring.profiles.active属性

一个好方法就是创建不同的配置文件,且命名规则遵循application-${profile}.properties,例如:

  1. 开发环境配置文件:application-dev.properties
  2. 测试环境配置文件:application-test.properties
  3. 生产环境配置文件:application-prod.properties

当然,我们不能删除项目最顶层的application.properties配置,在该文件中,根据部署场景不同,切换不同的配置文件:配置spring.profiles.active,属性值为${profile}

  1. spring.profiles.active=dev:启用application-dev.properties
  2. spring.profiles.active=test:启用application-test.properties
  3. spring.profiles.active=prod:启用application-prod.properties

启动时指定:

在执行有参启动时,可以在命令中进行指定要选用的配置文件,例如:
java -jar xx.jar --spring.profiles.active=test
这个命令的优先级是最高的,即使application.properties中已经配置spring.profiles.active=dev,最终程序还是会用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

配置方法:

  1. 若是properties文件:spring.profiles.include=dev1,dev2
  2. 若是yaml文件中,
    spring.profiles.include:
    -dev1
    -dev2
    或者:spring.profiles.include:dev1,dev2

配置的位置和区别:

  1. 配置方式一:application.properties中,配置spring.profiles.active=dev的同时指定spring.profiles.include=dev1,dev2
  2. 配置方式二:application.properties中,配置spring.profiles.active=dev,application-dev.properties中,配置spring.profiles.include=dev1,dev2。使用application-dev.properties时自动就激活了dev1、dev2两个文件,不用再次指定。(个人认为第二种方法更好)

区别:

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

用示例来使用和区分

在某个工程里,我依据开发、生产环境,以及它们要同时激活的配置,创建了多个配置,分别如下:
application-dev.properties配置:

my.name=dev
my.height=170#同时触发dev1和dev2的激活
spring.profiles.include=dev1,dev2

application-dev1.properties配置:

my.name=dev1
my.height=171

application-dev2.properties配置:

my.name=dev2
#my.height=172

application-prod.properties配置:

my.name=prod
my.height=180

application-prod1.properties配置:

my.name=prod1
my.height=181

application-prod2.properties配置:

my.name=prod2
my.height=182

测试一:

在application.properties配置文件中,指定

#激活的是开发环境配置文件
spring.profiles.active=dev

启动时不指定参数
结果:打印的内容为:姓名:dev2,身高:171
原因:

  1. 先加载application.properties
  2. 再加载application-dev.properties,
    my.name=dev
    my.height=170
  3. 加载application-dev1.properties,
    my.name=dev1
    my.height=171
  4. 加载application-dev2.properties,
    my.name=dev2
    my.height=171

测试二:

在测试一的基础上,启动时指定参数:–spring.profiles.active=prod
优先级最高,会使用生产环境配置文件
结果:打印的内容为:姓名:prod,身高:180

测试三:

在application.properties配置文件中,指定

#激活的是生产环境配置文件
spring.profiles.active=prod
#同时触发prod1和prod2的激活
spring.profiles.include=prod1

启动时不指定参数
结果:
The following profiles are active: prod1,prod2,prod
打印的内容为:姓名:prod,身高:180

spring.profiles.active和spring.profiles.include的使用与区别相关推荐

  1. springboot启动spring.profiles.active和spring.profiles.include影响的区别

    application.properties文件内容 spring.profiles.active=test4 pring.profiles.include=test3,test5 version=1 ...

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

    转自: spring.profiles.active和spring.profiles.include的使用及区别说明 下文笔者讲述spring.profiles.active和spring.profi ...

  3. spring.profiles.include 跟 spring.profiles.active 的区别

    spring.profiles.include 跟 spring.profiles.active 的区别 背景 我们经常看到springboot的 spring.profiles.active,有时也 ...

  4. springBoot配置spring.profiles.active多环境

    spring.profiles.active多环境配置 springBoot动态配置多环境(dev/test/prod)数据信息读取 pom文件配置 YAML文件配置 springBoot动态配置多环 ...

  5. springboot:spring.profiles.active

    使用maven-install命令导出jar包. 使用 "java -jar jar包名称" 运行jar包 java -jar   springbootmvcproject-0.0 ...

  6. Spring Boot配置@spring.profiles.active配置

    一 pom.xml配置如下: <profiles><profile><id>dev</id><properties><spring.p ...

  7. spring.profiles.active=@profiles.active@ 的使用

    现在在的公司用spring.profiles.active=@profiles.active@ 当我看到这个的时候,一脸蒙蔽,这个@ 是啥意思. 这里其实是配合 maven profile进行选择不同 ...

  8. 【Java】spring.profiles.active无效

    一.假设 1.假设是maven项目 2.假如pom增加了打包插件 3.假设application.yml配置了spring.profies.active 4.假设用到MyBatisPlus且mappe ...

  9. SpringBoot配置文件中spring.profiles.active配置详解

    SpringBoot配置文件中spring.profiles.active配置详解 1.多环境配置 我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发.测 ...

  10. springboot获取active_springboot 使用spring.profiles.active 区分不同环境下配置文件

    一.新建一个maven 工程 二.在pom.xml文件中加入如下依赖 4.0.0 com.bt.com.cn bt-springboot 0.0.1-SNAPSHOT bt-springboot bt ...

最新文章

  1. 项目实践:Spring Boot 三招组合拳,手把手教你打出优雅的后端接口
  2. pythorch基本信息查询
  3. 为什么 JavaScript 的 this 要这么用?
  4. 【转】ABP源码分析四十五:ABP ZERO中的EntityFramework模块
  5. 轻松搞定个人虚拟桌面部署之4-配置远程访问
  6. Eclipse无提示的解决办法 和 内容辅助技巧
  7. 《计算机网络》第三章:数据链路层(The Data Link Layer)
  8. 如何在Ubuntu系统中使用github
  9. kubernetes英语怎么读_小学三年级英语怎么学
  10. 中input宽度_使用HOG对卫星图像中的船舶进行分类
  11. 关于QT报C:\Program Files (x86)\sogoupinyin\Components\的错误
  12. 非合作博弈篇——混合策略博弈(mixed strategy)
  13. 机器学习-联合概率分布笔记
  14. 计算机 ppt图标,史上最完整的通信计算机PPT图标及模版 (PPTshare).ppt
  15. 车联网行业报告及摘要
  16. 计应121--实训三【李智飞(27号)--李阳持(26号)--胡俊琛(13号)--曹吉(2号)】
  17. 2021年多媒体技术圈年终事件大回顾
  18. iOS日常开发之常用单词、名词注释
  19. ERR_ABORTED 404
  20. 编写函数,实现对身份证号码最后一位的验证

热门文章

  1. 解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计...
  2. @+保留关键字当标识
  3. 实现一个react系列一:JSX和虚拟DOM
  4. 令仔代码收藏系列(二)----BASE64编码
  5. 【http协议2】 深入理解HTTP协议
  6. YII composer全局安装
  7. swift UI专项训练19 TextView 多行文本
  8. Openwrt netifd ubus解析
  9. 我的FPA性格色彩测试结果
  10. Facebook vs Chrome 关公秦琼的未来之战,互联网营销