SpringBoot多环境切换的灵活配置详细教程

 更新时间:2024年04月03日 10:59:02   作者:阿Q说代码  
在真实项目开发的时候,一定会有多个环境,下面这篇文章主要给大家介绍了关于SpringBoot多环境切换灵活配置的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

在日常的开发中,一般都会分好几种环境,比如通常的

  • 开发环境:一般在开发的过程中,一个比较随意地环境,通常可以随意重启,删除数据 ;
  • 测试环境:面向测试同学的环境,需要相对稳定,完整,基本模拟线上的环境,但是可操作。
  • 生产环境:也就是线上环境,基本没有什么大的问题不会操作的环境,是重中之重。

在三个环境都需要部署,怎么样保证多个环境的配置正确,开发方便,部署方便,这篇总结下

profile 的使用

profile 为在不同环境下使用不同的配置提供了支持,我们可以通过激活、指定参数等方式快速切换环境。多 Profile 文件方式 Spring Boot 的配置文件共有两种形式:.properties 文件和 .yml 文件,不管哪种形式,它们都能通过文件名的命名形式区分出不同的环境的配置,

文件命名格式为:application-{profile}.properties/yml

其中,{profile} 一般为各个环境的名称或简称,

例如 dev、test 和 prod 等等。当然也可以使用自定义的一些名字。

个人比较习惯yml的配置,更方便阅读,结构明确。

激活 profile 的方式

命令行启动

java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

idea 中配置

idea 中编辑启动参数,添加 vm 选项-Dspring.profiles.active=test注:这种方式和上面一样

配置文件中激活

创建 3 个配置文件,通过主配置文件激活环境(不灵活)

application.yml
application-dev.yml
application-test.yml

application.yml .主配置文件可以向下面这样写。

spring:
  profiles:
    active: dev

开发中最灵活的多环境配置

创建四个配置

application.yml
application-dev.yml
application-test.yml
application-prod.yml

主配置文件

application.yml #主配置文件

spring:
  profiles:
    active: ${ENV:dev}

注意:这里加了一个环境变量 ENV,在启动的时候进行注入,如果不写,默认启动 dev 环境

其他几个环境配置

application-dev.yml #开发环境的配置

server:
  port: 8091

application-test.yml #测试环境的配置

server:
  port: 8092

application-prod.yml #生产环境的配置

server:
  port: ${PORT:8093}

注:这三个环境配置,只在其中的 prod 环境使用了环境变量application-xxx.yml。 在后续使用prod的时候可以根据环境设置环境变量赋值配置。

相同的配置会覆盖 application.yml的配置

使用方式

1.在开发环境,可以写死测试环境,开发环境的配置,避免在开发传环境变量,激活什么的

2.在生产环境,可以通过环境变量 ENV=prod 激活生产环境的变量配置, idea 传递环境变量如下图

3.docker 环境启动时候通过 env 设置环境变量docker run -itd --env ENV=prod test.jar

4.docker-compose

配置文件拆分

配置文件支持将将配置进行拆分到不同的配置文件 如果多个环境拥有相同的配置,有两种解决办法

  • 提取到application.yml

  • 分离一个新的application-default_handler.yml

第一种情况可以针对 springboot 的一些通用配置

第二种适合一些业务的配置相关,比如项目中有一些自定义的配置,在三个环境都适合,就可以分离开

spring:
  profiles:
    active: ${ENV:dev}
    include: default_handler

只要 application-default_handler.yml 符合 yaml 的格式,项目中一样可以加载到

总结

  • 灵活使用环境变量启用不同的 profile
  • 灵活使用 spring.profiles.include 激活多个配置
  • 最后 application.properties 和 application.yml 是一样的使用方法
  • 如果你使用 nacos 也可以实现同样的效果,但是需要引入中间件,不推荐 

到此这篇关于SpringBoot多环境切换的灵活配置的文章就介绍到这了,更多相关SpringBoot多环境切换配置内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • 基于apache poi根据模板导出excel的实现方法

    基于apache poi根据模板导出excel的实现方法

    下面小编就为大家带来一篇基于apache poi根据模板导出excel的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • SpringBoot消息国际化配置实现过程解析

    SpringBoot消息国际化配置实现过程解析

    这篇文章主要介绍了SpringBoot消息国际化配置实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • springboot打war包部署到外置tomcat容器的方法

    springboot打war包部署到外置tomcat容器的方法

    这篇文章主要介绍了springboot]打war包部署到外置tomcat容器,在这需要注意的是在boot-launch.war在tomcat?webapps目录里面解压到boot-launch文件夹,感兴趣的朋友跟随小编一起看看吧
    2022-04-04
  • 亲手教你IDEA2020.3创建Javaweb项目的步骤详解

    亲手教你IDEA2020.3创建Javaweb项目的步骤详解

    这篇文章主要介绍了IDEA2020.3创建Javaweb项目的步骤详解,本文是小编手把手教你,通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-03-03
  • Spring事务执行流程及如何创建事务

    Spring事务执行流程及如何创建事务

    这篇文章主要介绍了Spring事务执行流程及如何创建事务,帮助大家更好的理解和学习使用spring框架,感兴趣的朋友可以了解下
    2021-03-03
  • springboot使用hibernate validator校验方式

    springboot使用hibernate validator校验方式

    hibernate validator提供了一套比较完善、便捷的验证实现方式。下面小编给大家介绍下springboot使用hibernate validator校验方式,感兴趣的朋友一起看看吧
    2018-01-01
  • JAVA 继承基本类、抽象类、接口介绍

    JAVA 继承基本类、抽象类、接口介绍

    Java是一个面向对象的语言,java面向对象一般有三大特征:封装、继承、多态
    2013-01-01
  • Java使用非覆盖的方法实现替换PDF中的文本

    Java使用非覆盖的方法实现替换PDF中的文本

    这篇文章主要为大家详细介绍了Java如何使用非覆盖的方法实现替换PDF中的文本,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • Spring创建bean的几种方式及使用场景

    Spring创建bean的几种方式及使用场景

    本文主要介绍了Spring创建bean的几种方式及使用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • java读取properties文件的方法实例分析

    java读取properties文件的方法实例分析

    这篇文章主要介绍了java读取properties文件的方法,实例分析了java读取在项目中与不在项目中properties文件的相关技巧,需要的朋友可以参考下
    2015-06-06

最新评论

?


http://www.vxiaotou.com