yml
配置文件很好用,可是实际生产中会有不少问题。java
首先咱们创建一个工程,将
application.properties
文件后缀改为application.yml
。springname: 张三 lesson: springboot desc: ${name}同窗正在努力学习${lesson}!!! #占位符DemoController.java
@RestController @RequestMapping("demo") public class DemoController {
@Resource private YmlData ymlData; @GetMapping("test") public void test() throws JsonProcessingException { System.out.println(ymlData.getDesc()); }
}浏览器
#### YmlData.java
@Databr/>@Component
public class YmlData {springboot
@Value("${name}") private String name; @Value("${lesson}") private String lesson; @Value("${desc}") private String desc;
}markdown
> 浏览器请求下`http://localhost:8080/demo/test` 看看控制台,乱码 设置编码格式,`ide-->file-->setting-->editor-->file encodings`  设置完成后`application.yml`完全乱码了,从新输入,改完重启,再请求一次,控制台输出:
张三正在努力学习springboot!!!app
#### 这些跟多环境配置有什么关系? 嗯,是不要紧,可是你多学了一个yml文件占位符,且咱们下面的示例也会根据这个变动。 application-prod.yml
name: 张三prod
lesson: springboot
desc: ${name}正在努力学习${lesson}!!!less
application-dev.yml
name: 张三dev
lesson: springboot
desc: ${name}正在努力学习${lesson}!!!ide
application.yml
spring:
profiles:
active: dev #多环境变量的精髓,这里肯定是加载哪一个配置文件!!!学习
好了,如今重启,在执行一次请求,控制台输出的是什么?
张三dev正在努力学习springboot!!!测试
那在调试的时候是否能够选择加载哪一个配置文件呢?,按下图所示操做  重启,看看如今打印的是什么?
张三prod正在努力学习springboot!!!
再增长一个application-test.yml
name: 张三test
修改application.yml以下:
spring:
profiles:
include: test,prod #包含哪些配置
active: dev #多环境变量的精髓,这里肯定是加载哪一个配置文件!!!
从新启动工程看看打印出来什么?
张三prod正在努力学习springboot!!!
> 从结果咱们能够看出,包含了include在内的配置,且相同配置在include的文件中使用的最后一个生效的。 > 而active文件中即便具备相同的配置(本文中的name配置)也没有被覆盖,另外include中包含的配置文件没有的配置,会在active中补充上来。 > 总结来讲:include和active取并集,相同的配置以include中的最后一个为准!