springboot的多个配置文件的关系
一般我们在使用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的多个配置文件的关系的更多相关文章
- Springboot学习:核心配置文件
核心配置文件介绍 SpringBoot使用一个全局配置文件,配置文件名是固定的 application.properties application.yml 配置文件的作用:修改SpringBoot自 ...
- 从SpringBoot源码分析 配置文件的加载原理和优先级
本文从SpringBoot源码分析 配置文件的加载原理和配置文件的优先级 跟入源码之前,先提一个问题: SpringBoot 既可以加载指定目录下的配置文件获取配置项,也可以通过启动参数( ...
- Spring注解使用和与配置文件的关系
Spring注解使用和与配置文件的关系 1 注解概述与容器管理机制 Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repositor ...
- SpringBoot第二篇:配置文件详解一
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10837594.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言 Sprin ...
- SpringBoot 及其 基本原理、配置文件(二)
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.SpringBoot 的版本与启动过程 1.SpringBoot都是jar工程 2.Spring ...
- springboot学习二:配置文件配置
springboot默认读取application*.properties #######spring配置####### spring.profiles.active=dev //引入开发配置文件 a ...
- springboot下整合各种配置文件
本博是在springboot下整合其他中间件,比如,mq,redis,durid,日志...等等 以后遇到再更.springboot真是太便捷了,让我们赶紧涌入到springboot的怀抱吧. ap ...
- SpringBoot系统列 2 - 配置文件,多环境配置(dev,qa,online)
实现项目的多环境配置的方法有很多,比如通过在Pom.xml中配置profiles(最常见) 然后在Install项目打War包的时候,根据需求打不同环境的包,如图: 这种配置多环境的方法在SSM框架中 ...
- JAVAEE——SpringBoot配置篇:配置文件、YAML语法、文件值注入、加载位置与顺序、自动配置原理
转载 https://www.cnblogs.com/xieyupeng/p/9664104.html @Value获取值和@ConfigurationProperties获取值比较 @Confi ...
随机推荐
- maven实战(7)-- 设置maven编译器级别
两种方式: (一)全局设置 首先我们要在settings.xml文件中找到<profiles>标签,然后在此标签内部粘贴如下配置: <profile> <id>jd ...
- I.MX6 eMMC分区挂载
/********************************************************************* * I.MX6 eMMC分区挂载 * 说明: * 如果想要 ...
- boost之timer
1. timer类实现 #pragma once #include <ctime> #include <limits> class timer { public: timer( ...
- java web项目的目录结构
- 【AHOI2009】中国象棋
[题目链接] 点击打开链接 [算法] 动态规划 f[i][j][k]表示前i行,有j列放了1个,有k列放了两个 分六种情况讨论即可 [代码] #include<bits/stdc++.h> ...
- python 高性能web框架 gunicorn+gevent
参考链接: http://rfyiamcool.blog.51cto.com/1030776/1276364/ http://www.cnblogs.com/nanrou/p/7026789.html ...
- liist不同遍历优缺点
JAVA中循环删除list中元素的方法总结 印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个 ...
- Android HandlerThread源码解析
在上一章Handler源码解析文章中,我们知道App的主线程通过Handler机制完成了一个线程的消息循环.那么我们自己也可以新建一个线程,在线程里面创建一个Looper,完成消息循环,可以做一些定时 ...
- poj 3683 Priest John's Busiest Day【2-SAT+tarjan+拓扑】
转换成2-SAT模型,建边是如果时间(i,j)冲突就连边(i,j'),其他同理 tarjan缩点,判可行性 返图拓扑,输出方案 #include<iostream> #include< ...
- 洛谷P3209 [HNOI2010]平面图判定(2-SAT)
传送门 看到哈密顿回路就被吓傻了……结果没有好好考虑性质…… 首先,平面图有个性质:边数小于等于$3n-6$(我也不知道为啥),边数大于这个的直接pass 然后考虑原图,先把哈密顿回路单独摘出来,就是 ...