一般我们在使用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的基础上进行补全或者覆盖变量。

												

最新文章

  1. D2.Reactjs 操作事件、状态改变、路由
  2. Server.mappath用法
  3. Get_File_Name Usage in Oracle Forms 6i
  4. Mac 开发者的十八般兵器:重温 10 篇热文
  5. 如何将数据库中已有表导入到powerDesigner生成pdm文件
  6. C++编程练习(9)----“图的存储结构以及图的遍历“(邻接矩阵、深度优先遍历、广度优先遍历)
  7. 前端测试框架Jest系列教程 -- Expect(验证)
  8. Android 7.0 新特性
  9. jQuery插件整理
  10. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-6项目缓冲方案
  11. 写给Android开发者的混淆使用手册
  12. HTML布局规范
  13. .net WinForm 的数据绑定
  14. MVC--初步理解(01)
  15. React(0.13) 定义一个checked组件
  16. Python元组与字典详解
  17. 4gcc编译器
  18. CakePHP Model中( 获取Session)使用Component的方法
  19. FZU-2268 Cutting Game(二进制使用)
  20. C# 数组与 list 互相转换案例

热门文章

  1. 禁止屏幕旋转并同时解决以至于导致Activity重启的方法
  2. 西交校赛 F. GZP and Poker
  3. [SHOI 2009] 会场预约
  4. iOS多线程GCD的简单使用
  5. 数据库sql互转(oracle转mysql为例子)
  6. PCB 线路铜皮面积(残铜率)计算的实现方法
  7. E20180422-hm
  8. SCUT - 243 - 宝华复习 - 二分 - 桶计数
  9. P5167 xtq的神笔
  10. NOIp2017真题模拟赛 By cellur925