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

 更新时间:2021年08月13日 09:23:52   作者:Java技术那些事  
本文主要介绍了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 环境切换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java中申请不定长度数组ArrayList的方法

    java中申请不定长度数组ArrayList的方法

    今天小编就为大家分享一篇java中申请不定长度数组ArrayList的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • java身份证合法性校验并提取身份证有效信息

    java身份证合法性校验并提取身份证有效信息

    这篇文章主要为大家详细介绍了java身份证合法性校验,并获取并根据身份证号提取身份证相关信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Java序列化和反序列化示例介绍

    Java序列化和反序列化示例介绍

    大家好,本篇文章主要讲的是Java序列化和反序列化示例介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • springmvc Rest风格介绍及实现代码示例

    springmvc Rest风格介绍及实现代码示例

    这篇文章主要介绍了springmvc Rest风格介绍及实现代码示例,rest风格简洁,分享了HiddenHttpMethodFilter 的源码,通过Spring4.0实现rest风格源码及简单错误分析,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 使用JPA+querydsl如何实现多条件动态查询

    使用JPA+querydsl如何实现多条件动态查询

    这篇文章主要介绍了使用JPA+querydsl如何实现多条件动态查询,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Springboot项目删除项目同步target文件问题解决方案

    Springboot项目删除项目同步target文件问题解决方案

    这篇文章主要介绍了Springboot项目删除项目同步target文件问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • 使用java基于pushlet和bootstrap实现的简单聊天室

    使用java基于pushlet和bootstrap实现的简单聊天室

    这篇文章主要介绍了使用java基于pushlet和bootstrap实现的简单聊天室的相关资料,需要的朋友可以参考下
    2015-03-03
  • Java实现最小生成树MST的两种解法

    Java实现最小生成树MST的两种解法

    最小生成树(MST)指在连通图的所有生成树中,所有边的权值和最小的生成树。本文介绍了求最小生成树的两种方法:Prim算法和Kruskal算法,需要的可以参考一下
    2022-05-05
  • SpringBoot @PostMapping接收HTTP请求的流数据问题

    SpringBoot @PostMapping接收HTTP请求的流数据问题

    这篇文章主要介绍了SpringBoot @PostMapping接收HTTP请求的流数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • ssh框架实现文件上传下载实例代码

    ssh框架实现文件上传下载实例代码

    本篇文章主要介绍了ssh框架文件上传下载实例代码,实例分析了Spring+struts+Hibernate的使用技巧,非常具有实用价值,需要的朋友可以参考下。
    2017-03-03

最新评论