# 1.加载顺序区别
首先**yml**和**properties**文件都是属于配置文件,功能一样。主要是区别于application和bootstrap的加载顺序。
>**Bootstrap.yml**(bootstrap.properties)在**application.yml**(application.properties)之前加载,就像application.yml一样,但是用于应用程序上下文的引导阶段。
# 2.典型场景
>1.当使用 **Spring Cloud Config Server**的时候,你应该在 **bootstrap.yml**里面指定 **spring.application.name和 spring.cloud.config.server.git.uri**
2.一些加密/解密的信息
技术上,**bootstrap.yml**由父**Spring ApplicationContext**加载。父ApplicationContext被加载到使用application.yml的之前。
当使用 Spring Cloud 的时候,配置信息一般是从 config server 加载的,为了取得配置信息(比如密码等),你需要一些提早的或引导配置。因此,把 config server 信息放在 bootstrap.yml,用来加载真正需要的配置信息。
# 3.属性覆盖问题
启动上下文时,**Spring Cloud**会创建一个`Bootstrap Context`,作为Spring应用的`Application Context`的父上下文。初始化的时候,`Bootstrap Context`负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的`Environment`。**`Bootstrap`属性有高优先级,默认情况下,它们不会被本地配置覆盖**。 `Bootstrap context`和`Application Context`有着不同的约定,所以新增了一个`bootstrap.yml`文件,而不是使用`application.yml` (或者`application.properties`)。保证`Bootstrap Context`和`Application Context`配置的分离。

application-properties和-bootstrap-yml的区别