一般我们在使用springboot时会用到多个环境下的配置文件,例如

application-dev.yml:开发环境 
application-uat.yml:用户验收测试环境 
application-prod.yml:生产环境

那他们和application.yml有什么关系呢?

配置文件的启用(激活)需要在application.yml中配置如下来激活dev的配置

  spring:
  profiles:
  active: dev
  现在我们使用dev配置,那application.yml文件是不是就不起作用了呢?不是的,我们可以分为几种情况
  1.在application.yml中配置的有,但在dev中没有的变量,
  2.在application.yml中配置的没有,但在dev中有的变量,
  3.在application.yml中配置的有,但在dev中也有。
  先看一下我们的配置文件,然后我们来分别验证三种情况。
  application.yml
server:
port: 8080
spring:
profiles:
active: dev
mypropertis:
name: main
age: 23
mypro:
name: pro
age: 100

  application-dev.yml

server:
port: 8000
mypropertis:
age: 30
address: 北京市
phone: ${random.int(12345,12346)} #12345-12346内的随机整数
uid: ${random.uuid}
profile: ${random.value} #32位的随机字符串

  controller

 @Autowired
MyPropertis myPropertis;
/**
* 测试从application.yml为对象赋值
* @return mypropertis
*/
@GetMapping("/propertis")
public MyPropertis propertis(){
return myPropertis;
}

  bean类

@Data
@Component
@ConfigurationProperties(prefix = "mypropertis")
public class MyPropertis {
private String name;
private Integer age;
private String address;
private int phone;
private String uid;
private String profile;
}

  下面我们开始测试。

  第一种,在application.yml中配置的有,但在dev中没有的变量,我们的配置文件中的mypro刚好符合。那我们就把bean类中的注解@ConfigurationProperties(prefix = "mypropertis")修改为@ConfigurationProperties(prefix = "mypro")进行测试。测试结果为

  第二种,在application.yml中配置的没有,但在dev中有的变量,例如我们的配置文件中的mypropertis.address。那我们就把bean类中的注解写为@ConfigurationProperties(prefix = "mypropertis")进行测试。测试结果为

第三种,在application.yml中配置的有,但在dev中也有,例如我们的配置文件中的mypropertis.age。这个其实刚刚的测试就可以,可以发现系统采用了dev中的配置将其覆盖了。

总结,配置文件以application.yml为基础,dev等配置文件在application.yml的基础上进行补全或者覆盖变量。

												

springboot的多个配置文件的关系的更多相关文章

  1. Springboot学习:核心配置文件

    核心配置文件介绍 SpringBoot使用一个全局配置文件,配置文件名是固定的 application.properties application.yml 配置文件的作用:修改SpringBoot自 ...

  2. 从SpringBoot源码分析 配置文件的加载原理和优先级

    本文从SpringBoot源码分析 配置文件的加载原理和配置文件的优先级     跟入源码之前,先提一个问题:   SpringBoot 既可以加载指定目录下的配置文件获取配置项,也可以通过启动参数( ...

  3. Spring注解使用和与配置文件的关系

      Spring注解使用和与配置文件的关系 1 注解概述与容器管理机制 Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repositor ...

  4. SpringBoot第二篇:配置文件详解一

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10837594.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言   Sprin ...

  5. SpringBoot 及其 基本原理、配置文件(二)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.SpringBoot 的版本与启动过程 1.SpringBoot都是jar工程 ​ 2.Spring ...

  6. springboot学习二:配置文件配置

    springboot默认读取application*.properties #######spring配置####### spring.profiles.active=dev //引入开发配置文件 a ...

  7. springboot下整合各种配置文件

    本博是在springboot下整合其他中间件,比如,mq,redis,durid,日志...等等  以后遇到再更.springboot真是太便捷了,让我们赶紧涌入到springboot的怀抱吧. ap ...

  8. SpringBoot系统列 2 - 配置文件,多环境配置(dev,qa,online)

    实现项目的多环境配置的方法有很多,比如通过在Pom.xml中配置profiles(最常见) 然后在Install项目打War包的时候,根据需求打不同环境的包,如图: 这种配置多环境的方法在SSM框架中 ...

  9. JAVAEE——SpringBoot配置篇:配置文件、YAML语法、文件值注入、加载位置与顺序、自动配置原理

    转载 https://www.cnblogs.com/xieyupeng/p/9664104.html @Value获取值和@ConfigurationProperties获取值比较   @Confi ...

随机推荐

  1. Vue之组件的内容分发

    aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUF ...

  2. 【转】Intellij idea 的maven项目如何通过maven自动下载jar包

    原文地址: https://blog.csdn.net/machao0903/article/details/73368909 maven项目自动加载jar包 所需工具如下: Intellij IDE ...

  3. JAVA基础--流程控制语句02

    JAVA流程控制语句 一.程序流程 定义:只代码执行的先后顺序 种类 顺序流程:程序默认流程,按照书写顺序执行 选择流程:选择语句 判断语句 重复流程: 循环控制语句 二.选择流程控制语句 判断语句 ...

  4. 模板 - 数学 - 快速傅里叶变换/快速数论变换(FFT/NTT)

    先看看. 通常模数常见的有998244353,1004535809,469762049,这几个的原根都是3.所求的项数还不能超过2的23次方(因为998244353的分解). 感觉没啥用. #incl ...

  5. gets,gets_s,fgets函数

    这次就说一下,gets(),gets_s(),fgets(),::::[在某一篇博客上看到的] C的标准库gets函数不对接受字符串的buffer进行边界检测,会造成越界,从而产生bug: fgets ...

  6. Jquery Validate不是用submit按钮提交表单,使用a标签js代码都可以

    不多说,上代码. $("#form").validate(); $("#btn").click(function() { if($("#form&qu ...

  7. NSA互联网公开情报收集指南:迷宫中的秘密·上

    猫宁!!! 参考链接: https://www.nsa.gov/news-features/declassified-documents/assets/files/Untangling-the-Web ...

  8. P1223 [小数据版]边权差值最小的生成树

    这道题和最小生成树kruskal的代码几乎相同,只不过不一定是最小生成树,所以不一定从最短的边开始做生成树:所以将每一条边分别作为起点,然后枚举就行了...... #include <bits/ ...

  9. A. Banana (2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛)

    题目大意是有一堆猴子,然后每个猴子都有自己喜欢的香蕉类型,然后香蕉会在指定的位置,问每个猴子能不能在每个地方吃到自己喜欢的香蕉. 其实直接暴力即可(因为最大最大最大是50) 上代码: #include ...

  10. 跟我一起玩Win32开发(1):关于C++的几个要点

    我不知道各位,一提起C++,第一感觉是什么?而据俺的观察,许多人几乎成了“谈C色变”.不管是C还是C++,一直以来都被很多人视为相当难学的玩意儿,幸好只是一个C++,没有C--,C**和C//,不然, ...