搞Spring Boot的小伙伴都知道,Spring Boot中的配置文件有两种格式,properties或者yaml,通常状况下,二者能够随意使用,选择本身顺手的就好了,那么这二者彻底同样吗?确定不是啦!本文就来和大伙重点介绍下yaml配置,最后再来看看yaml和properties配置有何区别。java
首先application.yaml在Spring Boot中能够写在四个不一样的位置,分别是以下位置:spring
项目根目录下的config目录中后端
项目根目录下数组
classpath下的config目录中app
classpath目录下前后端分离
四个位置中的application.yaml文件的优先级按照上面列出的顺序依次下降。即若是有同一个属性在四个文件中都出现了,以优先级高的为准。spa
那么application.yaml是否是必须叫application.yaml这个名字呢?固然不是必须的。开发者能够本身定义yaml名字,本身定义的话,须要在项目启动时指定配置文件的名字,像下面这样:代理
固然这是在IntelliJ IDEA中直接配置的,若是项目已经打成jar包了,则在项目启动时加入以下参数:code
java -jar myproject.jar --spring.config.name=app
server
这样配置以后,在项目启动时,就会按照上面所说的四个位置按顺序去查找一个名为app.yaml的文件。固然这四个位置也不是一成不变的,也能够本身定义,有两种方式,一个是使用 spring.config.location
属性,另外一个则是使用 spring.config.additional-location
这个属性,在第一个属性中,表示本身从新定义配置文件的位置,项目启动时就按照定义的位置去查找配置文件,这种定义方式会覆盖掉默认的四个位置,也可使用第二种方式,第二种方式则表示在四个位置的基础上,再添加几个位置,新添加的位置的优先级大于本来的位置。
配置方式以下:
这里要注意,配置文件位置时,值必定要以/结尾。
yaml也支持数组注入,例如
这段数据能够绑定到一个带Bean的数组中
项目启动后,配置中的数组会自动存储到servers集合中。固然,yaml不只能够存储这种简单数据,也能够在集合中存储对象。例以下面这种:
这个能够被注入到以下类中:
不一样于properties文件的无序,yaml配置是有序的,这一点在有些配置中是很是有用的,例如在Spring Cloud Zuul的配置中,当咱们配置代理规则时,顺序就显得尤其重要了。固然yaml配置也不是万能的,例如,yaml配置目前不支持@PropertySource注解。
好了,关于YAML的配置就先说这么多,有问题欢迎留言讨论。
▼往期精彩回顾▼2019新年福利,新书免费送!