SpringBoot默认支持properties(.properties)和YAML(.yml .yaml )两种格式的配置文件
1.加载顺序
若application.yml 和bootStrap.yml 在同一目录下 :bootstrap.yml先加载 application.yml后加载
bootstrap.yml 用于应用程序上下文的引导阶段。bootstrap.yml 由父Spring ApplicationContext加载。
父ApplicationContext 被加载到使用 application.yml 的之前。
如果resource
里面同时有application.properties
和 application.yml
,且存在相同的配置,则application.properties
会覆盖application.yml
里面的属性,因为application.properties
会后加载,也就是说哪个文件被最后加载,哪个才具有*。(application会覆盖bootstrap中的非引导配置)
2.配置区别
bootstrap.yml 和application.yml 都可以用来配置参数。
bootstrap.yml 用来程序引导时执行,应用于更加早期配置信息读取. 可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。
application.yml 可以用来定义应用级别的, 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等.如果加载的application.yml的内容标签与bootstrap的标签一致,application会覆盖bootstrap, 而application.yml 里面的内容可以动态替换。
3. 典型的应用场景如下:
- 当使用 Spring Cloud Config Server 的时候,你应该在 bootstrap.yml 里面指定 spring.application.name 和 spring.cloud.config.server.git.uri
- 和一些加密/解密的信息
为何需要把 config server 的信息放在 bootstrap.yml 里?
当使用 Spring Cloud 的时候,配置信息一般是从 config server 加载的,为了取得配置信息(比如密码等),你需要一些提早的或引导配置。因此,把 config server 信息放在 bootstrap.yml,用来加载真正需要的配置信息。