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