一般我们在使用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. COGS-2049 疯狂动物城

    Description 你意外来到了一个未知的星球, 这里是一个动物乌托邦, 生活着一群拥有非凡智力的动物. 你遇到了一个叫做尼克的狐狸, 他准备给他的 GF 过生日 . 他将制作一个巨大的多层蛋糕, ...

  2. Runtime.getRuntime().addShutdownHook(Thread)

    Runtime.getRuntime().addShutdownHook(Thread)为虚拟机添加关闭时添加钩子线程

  3. codeforces 667D D. World Tour(最短路)

    题目链接: D. World Tour time limit per test 5 seconds memory limit per test 512 megabytes input standard ...

  4. AJAX路径问题

    如果发AJAX请求,看发送请求消息的路径,如果看到报404的错,而这个 时候看下发送头部的路径,如果看到%20,这个时候有可能就是写路劲的时候,不小心按了一个空格

  5. Codeforces Round #419 (Div. 1) 补题 CF 815 A-E

    A-C传送门 D Karen and Cards 技巧性很强的一道二分优化题 题意很简单 给定n个三元组,和三个维度的上限,问存在多少三元组,使得对于给定的n个三元组中的每一个,必有两个维度严格小于. ...

  6. vue+webpack 打包文件 404 页面空白

    最近用vue-cli+vue-router+webpack建立项目,其中的遇到的三个问题,整理如下: vue-cli+ webpack 建立的项目,cnpm run build 打包项目之后,需要放在 ...

  7. UIAlterController 的使用

    相对于IOS8.4之后苹果对提示框做了进一步的封装,这将与之前的提示框有很大的同. 之前的 UIAlterView  是弹出一个提示框. 而今天学习的提示框是 通过视图控制器进行弹出,这就意味着,我们 ...

  8. 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时11

    课时11 神经网络训练细节part1(下) 2010年,Glorot等人写的论文,我们称之为Xavier初始化,他们关注了神经元的方差表达式.他们推荐一种初始化方式,那就是对每个神经元的输入进行开根号 ...

  9. 百度也推出公共DNS服务:180.76.76.76(转载)

    转自:http://www.cnbeta.com/articles/352221.htm

  10. 洛谷 - P1004 - 方格取数 - 简单dp

    https://www.luogu.org/problemnew/show/P1004 这道题分类到简单dp但是感觉一点都不简单……这种做两次的dp真的不是很懂怎么写.假如是贪心做两次,感觉又不能证明 ...