大家好,欢迎来到IT知识分享网。
Spring Cloud/Spring Boot项目中application.yml和bootstrap.yml区别
application和bootstrap的加载顺序
Bootstrap.yml在application.yml之前加载,就像application.yml一样,但是用于应用程序上下文的引导阶段。
技术上,bootstrap.yml由父Spring ApplicationContext加载。父ApplicationContext被加载到使用application.yml的之前。
当使用 Spring Cloud 的时候,配置信息一般是从 config server 加载的,为了取得配置信息(比如密码等),你需要一些提早的或引导配置。因此,把 config server 信息放在 bootstrap.yml,用来加载真正需要的配置信息。
启动上下文Bootstrap Context
Spring Cloud会创建一个Bootstrap Context,作为Spring应用的Application Context的父上下文。
初始化的时候,Bootstrap Context负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的Environment。Bootstrap属性有高优先级,默认情况下,它们不会被本地配置覆盖。 Bootstrap Context和Application Context有着不同的约定,所以新增了一个bootstrap.yml文件,而不是使用application.yml。保证Bootstrap Context和Application Context配置的分离。
下面是一个例子: bootstrap.yml
spring:
application:
name: foo
cloud:
config:
uri: ${SPRING_CONFIG_URI:http://localhost:8888}
推荐在bootstrap.yml or application.yml里面配置spring.application.name。
你可以通过设置spring.cloud.bootstrap.enabled=false来禁用bootstrap。
典型应用场景
1. 当使用 Spring Cloud Config Server的时候,应该在 bootstrap.yml里面指定 spring.application.name和 spring.cloud.config.server.git.uri。
2. 一些加密/解密的信息。
为何需要把 config server 的信息放在 bootstrap.yml 里?
当使用 Spring Cloud 的时候,配置信息一般是从 config server 加载的,为了取得配置信息(比如密码等),你需要一些提早的或引导配置。因此,把 config server 信息放在 bootstrap.yml,用来加载真正需要的配置信息。
如下是config server 中设置的配置信息:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/90255.html