当前位置:首页 > 科技  > 软件

Spring Boot 多个环境的配置方式

来源: 责编: 时间:2023-11-01 17:04:59 445观看
导读大家好,我是风筝这是一篇写给新手的文章,老手可以绕行了。起因是一个同学让我帮他看个问题,他说有两个环境,一个环境有问题,另一个环境没问题,但是一直找不到原因,假设一个环境是 dev,另一个环境是 test。于是,我远程了他的机

大家好,我是风筝Auv28资讯网——每日最新资讯28at.com

这是一篇写给新手的文章,老手可以绕行了。Auv28资讯网——每日最新资讯28at.com

起因是一个同学让我帮他看个问题,他说有两个环境,一个环境有问题,另一个环境没问题,但是一直找不到原因,假设一个环境是 dev,另一个环境是 test。Auv28资讯网——每日最新资讯28at.com

于是,我远程了他的机器,想分别看下两个环境的现象,结果发现没有地方可以配置环境。我问他是怎么切换环境的,他说要连另外一个环境就把 application.yml 中的配置改了,之后切换回来的时候再改回来。Auv28资讯网——每日最新资讯28at.com

我当时直接就无语住了。后来想想他还没毕业,不知道也正常,我刚学 Spring Boot 的时候连多个环境都不知道,也是后来正式加入工作团队后才学来的。Auv28资讯网——每日最新资讯28at.com

我们平时做项目的时候,一般都会分几套环境,开发环境、测试环境、预发布环境以及生产环境。每一套环境的配置都是不一样的,比如数据库连接串不一样、redis不一样,还有其他一些配置很可能都不一样。Auv28资讯网——每日最新资讯28at.com

那这时候,我们切换环境的时候就不能像前面说的那样手动改配置文件的内容了,那样既傻又费事。Auv28资讯网——每日最新资讯28at.com

有两种区分多个环境的方式可以使用。Auv28资讯网——每日最新资讯28at.com

多个配置文件

当配置Spring Boot应用程序的多个环境时,使用多配置文件的方式,通常会使用以下约定:application-{profile}.yml,其中{profile}是配置文件的名称。在这些配置文件中,你可以根据不同的环境指定不同的属性值。Auv28资讯网——每日最新资讯28at.com

例如 application-dev.yml 表示开发环境, application-test.yml 表示测试环境,application-prod.yml 表示生产环境,还有一个 application.yml表示通用的公共配置。Auv28资讯网——每日最新资讯28at.com

图片图片Auv28资讯网——每日最新资讯28at.com

通用配置文件 application.yml

和环境无关的配置都可以放在这里,例如启动端口号、服务名称以及其他共用属性等。Auv28资讯网——每日最新资讯28at.com

还可以在通用配置中设置 spring.profiles.active来控制启动配置,比如配置成 dev,那就是用 application-dev.yml的配置。Auv28资讯网——每日最新资讯28at.com

server:  port: 9000spring:  application:    name: fengzheng  profiles:    # 环境配置    active: dev    common: key: 公共 key

各环境配置

除了通用配置外, 其他几个配置文件就是配置与各自环境有关的配置了,比如开发环境和测试环境使用不用的数据库服务器,不同的redis集群,这就要在各自的配置中区分开来。Auv28资讯网——每日最新资讯28at.com

dev 环境配置文件 application-dev.yml:Auv28资讯网——每日最新资讯28at.com

dev-property: dev-valuedev-another-property: dev-another-value# Dev 环境的数据库配置spring:  datasource:    url: jdbc:mysql://localhost:3306/devdb    username: devuser    password: devpassword

test 环境配置文件 application-test.yml:Auv28资讯网——每日最新资讯28at.com

test-property: test-valuetest-another-property: test-another-value# Test 环境的数据库配置spring:  datasource:    url: jdbc:mysql://localhost:3306/testdb    username: testuser    password: testpassword

prod 环境配置文件 application-prod.yml:Auv28资讯网——每日最新资讯28at.com

prod-property: prod-valueprod-another-property: prod-another-value# Prod 环境的数据库配置spring:  datasource:    url: jdbc:mysql://production-db-url:3306/proddb    username: produser    password: prodpassword

指定环境启动

之后在启动项目的时候,就可以通过-Dspring.profiles.active来指定使用的配置文件,也就是指定的环境了。Auv28资讯网——每日最新资讯28at.com

java -jar myapp.jar -Dspring.profiles.active=dev

例如上面的命令,将激活 application-dev.yml 中的配置。Auv28资讯网——每日最新资讯28at.com

在 IDEA 中,通过 "Run/Debug Configurations",在 VM options 中加入相应的配置启动,可以直接连接到对应的环境。Auv28资讯网——每日最新资讯28at.com

图片图片Auv28资讯网——每日最新资讯28at.com

或者找到 Active profiles ,直接在后面填写对应的配置名称也可以。Auv28资讯网——每日最新资讯28at.com

图片图片Auv28资讯网——每日最新资讯28at.com

在一个配置文件中配置多个环境

除了使用多个配置文件,用后缀区分外,还可以直接在一个配置文件中配置多个环境。Auv28资讯网——每日最新资讯28at.com

例如下面的配置,把公共配置写在最前面,然后之后每一个环境的配置用 ---区分,spring.profiles来指定当前段落代表的配置。Auv28资讯网——每日最新资讯28at.com

spring:  application:    name: fengzheng    ---    spring:  profiles: dev  datasource:    url: jdbc:mysql://production-db-url:3306/dev-db    username: produser    password: prodpasswordserver:  port: 1990---spring:  profiles: test  datasource:    url: jdbc:mysql://production-db-url:3306/test-db    username: produser    password: prodpasswordserver:  port: 1991---spring:  profiles: prod  datasource:    url: jdbc:mysql://production-db-url:3306/prod-db    username: produser    password: prodpasswordserver:  port: 1992

之后启动项目的时候,和前面多个配置文件的方式一样。Auv28资讯网——每日最新资讯28at.com

通过-Dspring.profiles.active来指定使用的配置文件,也就是指定的环境了。Auv28资讯网——每日最新资讯28at.com

java -jar myapp.jar -Dspring.profiles.active=dev

例如上面的命令,将激活 application-dev.yml 中的配置。Auv28资讯网——每日最新资讯28at.com

在 IDEA 中,通过 "Run/Debug Configurations",在 VM options 中加入相应的配置启动,可以直接连接到对应的环境。Auv28资讯网——每日最新资讯28at.com

图片图片Auv28资讯网——每日最新资讯28at.com

或者找到 Active profiles ,直接在后面填写对应的配置名称也可以。Auv28资讯网——每日最新资讯28at.com

图片 图片 Auv28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-16377-0.htmlSpring Boot 多个环境的配置方式

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Mockito 避坑指南 - 常见错误的预防与处理

下一篇: 你真的了解Java的反射机制吗?

标签:
  • 热门焦点
  • K60至尊版刚预热 一加Ace2 Pro正面硬刚

    Redmi这边刚如火如荼的宣传了K60 Ultra的各种技术和硬件配置,作为竞品的一加也坐不住了。一加中国区总裁李杰发布了两条微博,表示在自家的一加Ace2上早就已经采用了和PixelWo
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 小米平板5 Pro 12.4简评:多专多能 兼顾影音娱乐的大屏利器

    疫情带来了网课,网课盘活了安卓平板,安卓平板市场虽然中途停滞了几年,但好的一点就是停滞的这几年行业又有了新的发展方向,例如超窄边框、高刷新率、多摄镜头组合等,这就让安卓
  • 7月安卓手机好评榜:三星S23Ultra好评率第一

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年7月1日至7月31日,仅限国内市场。第一名:三星Galaxy S23 Ultra好评率:95.71%在即将迎来新
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 自律,给不了Keep自由!

    来源 | 互联网品牌官作者 | 李大为编排 | 又耳 审核 | 谷晓辉自律能不能给用户自由暂时不好说,但大概率不能给Keep自由。近日,全球最大的在线健身平台Keep正式登陆港交所,努力
  • 超级标准版旗舰!iQOO 11S全球首发iQOO超算独显芯片

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
  • OPPO K11评测:旗舰级IMX890加持 2000元档最强影像手机

    【Techweb评测】中端机型用户群体巨大,占了中国目前手机市场的大头,一直以来都是各手机品牌的“必争之地”,其中OPPO K系列机型一直以来都以高品质、
  • 利用职权私自解除被封帐号 Meta开除20多名员工

    11月18日消息,据外媒援引知情人士表示,过去一年时间内,Facebook母公司Meta解雇或处罚了20多名员工以及合同工,指控这些人通过内部系统以不当方式重置用户帐号,其
Top