当前位置: 首页 > news >正文

SpringBoot激活profiles的几种方式

多环境是最常见的配置隔离方式之一,可以根据不同的运行环境提供不同的配置信息来应对不同的业务场景,在SpringBoot内支持了多种配置隔离的方式,可以激活单个或者多个配置文件。

激活的profiles要在项目内创建对应的配置文件,格式为application-{profile}.yml

一、命令行方式

命令一:运行时指定,使用--spring.profiles.active

命令行方式是一种外部配置的方式,在执行java -jar命令时可以通过--spring.profiles.active=test 的方式进行激活指定的profiles列表。

使用方式如下所示:

java -jar xx-v1.0.jar --spring.profiles.active=dev --server.port=8080 &> xx.log &

命令二:打包时指定,使用 mvn -P

@profileActive@ 是配合 maven profile 进行选择不同配置文件进行开发

第一步:在 application.properties 中配置

spring.profiles.active=@profileActive@

第二步:在pom 中配置

<profiles><profile><id>dev</id><properties><profileActive>dev</profileActive></properties></profile><profile><id>prod</id><properties><profileActive>prod</profileActive></properties></profile>
</profiles>

 第三步:打包命令

mvn package -P prod -DskipTests

 个人不喜欢这种方式,麻烦。建议使用“命令一”的方式。

二、系统变量方式

Mac/Linux系统配置环境变量

编辑环境变量配置文件/etc/profile,添加名为SPRING_PROFILES_ACTIVE的环境变量,如下所示:

export SPRING_PROFILES_ACTIVE=dev

Windows系统配置环境变量

环境变量的配置方式请参考Java环境变量配置,新建一个名为SPRING_PROFILES_ACTIVE的系统环境变量,设置变量的值为dev即可。

在配置文件中读取环境变量,如下:

${SPRING_PROFILES_ACTIVE:dev}

三、配置文件方式

配置文件方式是最常用的方式,不过灵活性不强,局限性比较大,不建议使用这种方式来激活配置文件。

我们只需要在application.yml配置文件添加配置即可,使用方式如下所示:

spring:profiles:active: dev

四、Java系统属性方式

Java系统属性方式也是一种外部配置的方式,在执行java -jar命令时可以通过-Dspring.profiles.active=test的方式进行激活指定的profiles列表。

使用方式如下所示:

java -Dspring.profiles.active=dev -jar xx-v1.0.jar &> xx.log &

注意:-D方式设置Java系统属性要在-jar定义。

 五、补充说明

5.1 优先级

命令行方式 > Java系统属性方式 > 系统变量方式 > 配置文件方式

经过测试"命令行方式"的优先级最高,而"内部配置文件方式"则是最低的。

5.2 激活多个profile

如果需要激活多个profile可以使用逗号隔开,如:

--spring.profiles.active=dev,test

最后,建议大家在“生产环境”使用“命令行” 或 “系统环境变量"的方式来激活指定profile的配置。同样,端口也建议使用这两种方式来指定。

http://www.lryc.cn/news/92763.html

相关文章:

  • 【Java】Java核心要点总结:58
  • 前端面试题---作用域链和原型链
  • 零售品牌私域流量池如何运营?火山引擎数智平台提供全套产品组合
  • rk3568 SD卡启动
  • English Learning - L3 作业打卡 Lesson5 Day34 2023.6.7 周三
  • 【运筹优化】最短路算法之A星算法 + Java代码实现
  • [6]PCB设计实验|认识常用元器件|电阻器|18:30~19:00
  • Webots R2021a教程
  • C++ 输出格式控制
  • 【C++】引用和右值引用
  • NodeJS MongoDB⑦
  • 情感分析实战(中文)-共现语义篇
  • 【数据结构与算法】03 队列(顺序队列--循环队列--优先级队列--链队列)
  • 【区块链 | L2】作为Layer2赛道的领跑者,如何理解 Arbitrum?
  • 【协议】NVMe over RoCE |nvmeof
  • 硬件设计电源系列文章-DCDC转换器布局设计
  • 「从入门到精通,一位设计师分享学习Illustrator的技巧和经验!」
  • RedisGraph的整体架构
  • C#可视化 家用轿车信息查询系统(具体做法及全部代码)
  • Nautilus Chain全球行分享会,上海站圆满举办
  • day50_mybatis
  • 第十一届“创业江苏”科技创业大赛正式启动
  • EasyX实现简易贪吃蛇
  • Linux下ElasticSearch7.9.2安装配置(包含服务器配置、启动停止脚本、开放端口和elasticsearch-head插件的使用)
  • JS 之 事件Event对象详解(属性、方法、自定义事件)
  • 65寸电视长宽多少厘米
  • Python爬取影评并进行情感分析和数据可视化
  • ubuntu22.04.2安装onlyoffice(不更改默认端口版)
  • 企业如何有效制定企业信息化发展规划?(附信息化模板)
  • 计算机网络填空题