springboot 多环境配置 yml文件版的实现方法

关于 dev、sit、uat、prod多环境切换的配置

最近小伙伴跟杨洋我聊到了多环境配置的问题,网上的大部分教程都是copy的,很多文章根本就没法用,小伙伴很苦恼啊,于是心(yu)地(shu)善(lin)良(feng)的杨洋回去写了个demo给了小伙 , 那么这边文章呢,正好给大家讲解下关于springboot 的多环境配置

科普时间:

 dev、sit、uat、prod是什么呢?

首先给刚接触的小伙伴们科普下含义

  • dev--本地开发环境;
  • sit--测试环境;
  • uat--准生产环境;
  • prod--生产环境;

 什么是多环境配置切换呢,为什么要实现呢?

  • 这个呢,你快速搭建一个springboot项目,只有一个环境--开发环境(DEV),那你代码写好了,推送到SVN或者GIT上,你们项目组的准生产环境(UAT)的mysql的库跟sit环境肯定不是一个库,不可能直接修改配置文件吧(当然你真的直接修改当我没说..)
  • 所以,现在小伙伴们就想,我应该如何实现本地开发配置跟准生产配置的自动切换呢?

先准备多环境配置文件

首先呢,你得有一个 application.yml 文件

然后呢,你想实现不同环境切换,那你得有对应环境的配置文件,复制application.yml 四份

,分别对应不同的环境,实现如下

注意:请小伙伴一定要看清楚是-sit 不是_sit ,你这文件不行的,必须是 -xxx结尾 这边需要说明的是,你 公共部分的配置 ,请放在application.yml中,如果是各个不同的配置(比如不同的mysql配置),分别放在对应的文件中(比如你sit的mysql用户有增删查看权限,你uat用户只有查看权限) 这边呢,就是把配置部分的基本整理好了,如果这时候小伙伴启动项目,怎么启动都是执行的application.yml

那如何切换呢?

这边需要修改pom.xml来实现切换配置文件,引入如下:

1. 配置profiles节点

<!-- 多环境配置方案 -->
  <profiles>
    <profile>
      <!-- 本地开发环境 -->
      <id>dev</id>
      <properties>
        <profileActive>dev</profileActive>
      </properties>
      <!-- 默认开启这个配置 -->
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
    </profile>
    <profile>
      <id>sit</id>
      <properties>
        <profileActive>sit</profileActive>
      </properties>
    </profile>
    <profile>
      <id>uat</id>
      <properties>
        <profileActive>uat</profileActive>
      </properties>
    </profile>
    <profile>
      <id>prod</id>
      <properties>
        <profileActive>prod</profileActive>
      </properties>
    </profile>
  </profiles>

2. 开启过滤,用指定的参数替换directory下的文件中的参数,这是在< build >下的

<resources>
      <resource>
        <!--开启过滤,用指定的参数替换directory下的文件中的参数-->
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>

3. 添加解析插件

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <configuration>
        <delimiters>@</delimiters>
        <useDefaultDelimiters>false</useDefaultDelimiters>
      </configuration>
    </plugin>

4. 修改application.yml文件

注意:@profileActive@ 中的数据对应的是你properties的数据

profiles:
  active: @profileActive@

5. 需要添加yaml的依赖,不然无法启动idea启动(还有另一种办法是下载idea支持的插件,这边不推荐)

<dependency>
	      <groupId>org.yaml</groupId>
	      <artifactId>snakeyaml</artifactId>
	</dependency>

验证多环境配置切换

1.idea启动验证

写了一个demo验证,每个yml文件添加一个自定义参数,以及对应的端口号都不相同,如下:

一个方法进行验证

/**
 - @author yanglei
 - @desc
 - @date 2020/6/28
 */
@RestController
public class DemoController {

  @Value("${envname}")
  private String envName;

  @GetMapping
  @RequestMapping("/getEnv")
  public String getEnv(){
    return "当前环境是:"+envName;
  }
}

示例图

dev 测试

prod 测试

2.打成jar包验证 使用命令clean package -P prod 进行打包

打包完成,进行检验

完成!

注意点:

  • 如果出现 next token found character '@' that cannot start any token 说明你pom文件的解析插件没有添加
  • 如果出现无法运行idea,说明你yaml的依赖没有添加

总结

到此这篇关于springboot 多环境配置 yml文件版的实现方法的文章就介绍到这了,更多相关springboot 多环境配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springboot多环境(dev、test、prod)配置详解

    我们在开发应用的时候,通常同一套程序会被应用和安装到几个不同的环境中,比如开发.测试.生产等. 其中每个环境的数据库地址.服务器端口等配置都不同.如果在为不同环境打包时都要频繁的修改配置文件,那必将是个非常繁琐的且容易出错的事情. 对于多环境的配置,各种项目构建工具或是架构的基本思路是一样的,通过配置多份不同的环境配置文件,在通过打包命令指定需要打包的内容之后 进行区分打包,spring boot也不列外.或者说实现起来更加简单. propertiest配置格式 在Spring Boot中多环境

  • springboot 多环境配置教程

    在上一课中我们通过idea工具没有做任何配置就构建了一个springboot项目,并且已经成功启动了,但我们都很清楚这些都远远不能达到我们实际项目的需求,比如我们要引入我们自己的redis配置.mysql配置等,应该如何处理呢?在spring mvc中我们都是通过spring.xml相关文件配置,在springboot中这些都已经不存在了,我们应该怎样配置呢?别急,马上为大家揭晓谜底,跟着我一起来吧! NO1.我们在做项目的时候是不是都会区分很多环境呢?比如开发环境.测试环境.生产环境等,那么第

  • SpringBoot项目application.yml文件数据库配置密码加密的方法

    在Spring boot开发中,需要在application.yml文件里配置数据库的连接信息,或者在启动时传入数据库密码,如果不加密,传明文,数据库就直接暴露了,相当于"裸奔"了,因此需要进行加密处理才行. 使用@SpringBootApplication注解启动的项目,只需增加maven依赖 我们对信息加解密是使用这个jar包的: 编写加解密测试类: package cn.linjk.ehome; import org.jasypt.encryption.pbe.StandardP

  • springboot学习笔记之 profile多环境配置切换的实现方式

    前言 一个应用程序从开发到上线,往往需要经历几个阶段,例如开发.测试.上线.每个阶段所用到的环境的配置可能都是不一样的,Springboot 应用可以很方便地在各个环境中对配置进行切换.所以,今天主要介绍Springboot profiles实现多环境配置切换. profiles多环境配置切换的四种方式 多个配置文件的方式yml 多文档块方式 设置程序参数 设置虚拟机参数 1.多个配置文件的方式 1.1.修改application.properties server.port=8080 1.2.

  • 解决idea不支持SpringBoot yml文件的图文教程

    再初用SpringBoot时肯定会遇到这样的问题: 为什么idea不支持yml? 为什么idea的yml文件没有提示? 为什么idea的yml不识别? 第一个问题解答  1.安装YAML插件 2.再Settings中找到File Types然后找YAML看看是否有yml后缀名 第二个问题为什么没有提示? 1.安装插件SnakeYAML plugin即可 第三个问题:大坑! 以上问题还是不能解决,那么 1.看看你项目的结构你的resource是一个文件夹还是一个resource的包 2.是否是id

  • springboot 多环境配置 yml文件版的实现方法

    关于 dev.sit.uat.prod多环境切换的配置 最近小伙伴跟杨洋我聊到了多环境配置的问题,网上的大部分教程都是copy的,很多文章根本就没法用,小伙伴很苦恼啊,于是心(yu)地(shu)善(lin)良(feng)的杨洋回去写了个demo给了小伙 , 那么这边文章呢,正好给大家讲解下关于springboot 的多环境配置 科普时间:  dev.sit.uat.prod是什么呢? 首先给刚接触的小伙伴们科普下含义 dev--本地开发环境: sit--测试环境: uat--准生产环境: pro

  • SpringBoot外部化配置使用Plus版的方法示例

    PS: 之前写过一篇关于 SpringBoo 中使用配置文件的一些姿势,不过嘛,有句话(我)说的好:曾见小桥流水,未睹观音坐莲!所以再写一篇增强版,以便记录. 序言 上一篇博客记录,主要集中在具体的配置内容,也就是使用 @ConfigurationProperties 这个注解来进行配置与结构化对象的绑定,虽然也顺带说了下 @Value 的使用以及其区别. 在这篇记录中,打算从总览,鸟瞰的俯视视角,来从整体上对 SpringBoot ,乃至 Spring Framework 对于外部化配置文件处

  • SpringBoot多环境配置及配置文件分类实例详解

    目录 二.配置文件分类 2.1 代码演示 2.1.1 环境准备 2.1.2 验证1级和2级的优先级 2.1.3 验证2级和4级的优先级 一.多环境配置 在工作中,对于开发环境.测试环境.生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的. 来回的修改配置会很麻烦,而 SpringBoot 给开发者提供了多环境的快捷配置,需要切换环境时只需要改一个配置即可.不同类型的配

  • SpringBoot实现加载yml文件中字典数据

    将字典数据,配置在 yml 文件中,通过加载yml将数据加载到 Map中 Spring Boot 中 yml 配置.引用其它 yml 中的配置.# 在配置文件目录(如:resources)下新建application-xxx 必须以application开头的yml文件, 多个文件用 "," 号分隔,不能换行 项目结构文件 application.yml server: port: 8088 application: name: VipSoft Env Demo spring: pro

  • springboot如何读取application.yml文件

    现在开发主要使用微服务框架springboot,在springboot中经常遇到读取application.yml文件的情形. 一.概述 开发过程中经常遇到要读取application.yml文件中的属性值,本文总结几种读取的方式,供参考. 二.详述 我这里使用的是springboot-2.1.2.RELEASE版本,这里使用的是application.properties的配置方式,和使用application.yml的方式是一样的.下面是application.properties文件的内容

  • SpringBoot多环境配置教程详解

    目录 一.为什么要配置多环境 二.如何进行多环境配置呢 1.针对 yaml 配置文件 2.针对 properties 配置文件 三.命令行启动参数 第一步:打包项目 第二步:输入命令行 补充内容 一.为什么要配置多环境 当我们工作开发真实的项目时,可能会遇到不同的环境,如:开发环境.生产环境.测试环境等,不同的环境所需要的配置内容也会不尽相同,如果我们每次切换环境时再去配置对应的环境配置,肯定会降低我们的开发效率,所以,掌握多环境配置还是非常有必要的. 二.如何进行多环境配置呢 我们还是以配置端

  • springboot多环境配置方案(不用5分钟)

    一 前言 本篇文章的主题是在springboot中写多个配置文件,指定让个配置文件生效,以便于达到在开发环境,测试环境,线上环境根据不同的配置灵活应用:读完本篇你将获得,学会springboot的多环境配置:学会使用idea配置虚拟机参数启动不同的配置文件:学会使用jar包运行并且指定不同的配置文件等: 二 激活方式一 spring框架内部提供了2中方式用于加载YAML文档,以供启动时读取配置文件:YamlPropertiesFactoryBean 会 加载 YAML 变为 Properties

  • SpringBoot使用阿里OSS实现文件云存储的方法

    前言 我们在项目中经常会使用到图片或者文档资源,一般来说如何这类文件比较少的时候我们可以直接存在在服务器中,但是如果一旦这些文件到达一定数量的时候如果在放在应用服务器必然会影响应用服务器的性能,并且有时候这些图片资源也要直接用在前端显示当中,所以放在应用服务器也是不妥的.一些比较大的互联网公司可能会使用一些分布式文件系统来达到存储文件的目的,但这种方式门槛过高.如何找到一个合适且性价比高的文件存储方式呢?那么不得不说的就是对象存储服务OSS. FastDFS分布式文件系统可参考我的博客:Fast

  • springboot打包不同环境配置以及shell脚本部署的方法

    前言 本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assembly-plugin打发布压缩包 分享shenniu_publish.sh程序启动工具 linux上使用shenniu_publish.sh启动程序 profiles指定不同环境的配置 通常一套程序分为了很多个部署环境:开发,测试,uat,线上 等,我们要想对这些环境区分配置文件,可以通过两种方式: 通过a

随机推荐