SpringBoot多种环境自由切换的实现

yml配置文件很好用,但是实际生产中会有很多问题。

  • 测试是一套配置,生产是一套配置;不同人开发不同的模块,共用一个yml文件容易发生冲突;
  • 本地开发需要本地化配置调试,本节咱们就把这些头疼的问题统统解决掉。

首先我们建立一个工程,将application.properties文件后缀改成application.yml

name: 张三
lesson: springboot
desc: ${name}同学正在努力学习${lesson}!!! #占位符

DemoController.java

@RestController
@RequestMapping("demo")
public class DemoController {

    @Resource
    private YmlData ymlData;

    @GetMapping("test")
    public void test() throws JsonProcessingException {
        System.out.println(ymlData.getDesc());
    }
}

YmlData.java

@Data
@Component
public class YmlData {

    @Value("${name}")
    private String name;
    @Value("${lesson}")
    private String lesson;
    @Value("${desc}")
    private String desc;
}

浏览器请求下http://localhost:8080/demo/test 看看控制台,乱码

设置编码格式,ide-->file-->setting-->editor-->file encodings

设置完成后application.yml彻底乱码了,重新输入,改完重启,再请求一次,控制台输出:

张三正在努力学习springboot!!!

这些跟多环境配置有什么关系?

application-prod.yml

name: 张三prod
lesson: springboot
desc: ${name}正在努力学习${lesson}!!!

application-dev.yml

name: 张三dev
lesson: springboot
desc: ${name}正在努力学习${lesson}!!!

application.yml

spring:
  profiles:
    active: dev #多环境变量的精髓,这里确定是加载哪个配置文件!!!

好了,现在重启,在执行一次请求,控制台输出的是什么?

张三dev正在努力学习springboot!!!

那在调试的时候是否可以选择加载哪个配置文件呢?,按下图所示操作

重启,看看现在打印的是什么?

张三prod正在努力学习springboot!!!

再增加一个application-test.yml

name: 张三test

修改application.yml如下:

spring:
  profiles:
    include: test,prod #包含哪些配置
    active: dev #多环境变量的精髓,这里确定是加载哪个配置文件!!!

重新启动工程看看打印出来什么?

张三prod正在努力学习springboot!!!

从结果我们可以看出,包含了include在内的配置,且相同配置在include的文件中使用的最后一个生效的。

而active文件中即使具有相同的配置(本文中的name配置)也没有被覆盖,另外include中包含的配置文件没有的配置,会在active中补充上来。

总结来说:include和active取并集,相同的配置以include中的最后一个为准!

到此这篇关于SpringBoot多种环境自由切换的实现的文章就介绍到这了,更多相关SpringBoot 环境切换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springboot 多环境切换的方法

    properties文件 profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境: 例如: application-test.properties 代表测试环境配置 application-dev.properties 代表开发环境配置 但是Springboot并不会直接启动这些配置文件,它默认使用application.properties主配置文件: 我们需要通过一个配置来选择需要激活的环境: spring.profiles.active=

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

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

  • 在windows环境下安装jdk8、jdk9、jdk11、jdk12并自由切换

    在windows环境下安装jdk8.jdk9.jdk11.jdk12并自由切换在windows下安装jdk的各个版本安装各个版本的jdk,并设置安装路径配置环境各个版本的环境变量设置JAVA_HOME设置path切换jdk版本 在windows下安装jdk的各个版本安装各个版本的jdk,并设置安装路径 jdk8安装在C:\ProgramFile\Java jdk11安装在C:\ProgramFile\Java jdk12安装在C:\ProgramFile\Java jdk9安装在C:\Java9

  • SpringBoot多种环境自由切换的实现

    yml配置文件很好用,但是实际生产中会有很多问题. 测试是一套配置,生产是一套配置:不同人开发不同的模块,共用一个yml文件容易发生冲突: 本地开发需要本地化配置调试,本节咱们就把这些头疼的问题统统解决掉. 首先我们建立一个工程,将application.properties文件后缀改成application.yml. name: 张三 lesson: springboot desc: ${name}同学正在努力学习${lesson}!!! #占位符 DemoController.java @R

  • SpringBoot实现多环境配置文件切换教程详解

    目录 背景 解决方案 一.新建配置文件 二. 服务调用测试 2.1 新建调用类 2.2 使用样例项目 三.扩展练习 3.1 使用注解标记配置,首先定义一个接口 3.2 分别定义俩个实现类来实现它 3.3 修改application.yml文件激活配置 3.4 新增查询方法 3.5 使用一个或多个配置文件及激活标记文件 3.6 切换日志文件 背景 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据

  • springboot多环境进行动态配置的方法

    目录 一.如何配置多环境 二.生效多环境的多种方式 2.1.spring.config.name 2.2.spring.profiles.active 2.3.pom中<profiles>标签 三.总结 在平时的开发中,经常会有多个环境,如何管理多个环境中的配置呐?一个是我们本地的开发环境,可以称为dev,一个是测试环境,我们称为test,最后还要有生产环境,称为prod.每个环境的配置都是不一样的,如何做到快捷方便的使用各自环境的配置绝对是开发中需要着重考虑的. 一.如何配置多环境 在spr

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

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

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

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

  • Springboot实现根据条件切换注入不同实现类的示例代码

    最近有个一需求需要根据外界环境的属性(操作系统 || yml属性 || 其他bean的状态) 来实现启动时注入两套不同的实现类, 实现切换. 实现启动时条件注入分2步: 第一步 使用@Conditional(参数为 True false条件实现类 需要你自己实现)注解 @Conditional(RabbitMqCondition.class) public class RabbitmqSMSMsgServiceImpl extends RabbitmqBasicMsgService { // @

  • Springboot多环境开发及使用方法

    目录 概述 多环境设置使用 多环境分组管理 Maven和spring-boot的配置冲突 概述 Springboot在不同的阶段运行,所使用的环境可能不一样比如在开发阶段.测试阶段.生产阶段,应用阶段可能这些阶段Springboot项目运行的环境都不同,所以可以提前设置多种环境,根据场景的不同进行选择使用 多环境设置使用 方法1:在yml配置文件中提前写好多种配置,然后选择调用哪个 方法2:这个方法也适用于后缀名为prperties的配置文件每种环境设置一个配置文件,然后再写一个主配置文件,在主

随机推荐