美文网首页
关于application和bootstrap的加载顺序及区别问

关于application和bootstrap的加载顺序及区别问

作者: 小迷糊紫靈 | 来源:发表于2019-12-24 08:45 被阅读0次

    最近做spring cloud 并利用 config 配置 可扩展的高可用eureka环境。遇到的问题。

    问题

    当第一台eureka注册中心启动时,并没有config配置中心存在,那么启动配置文件获取应该从本地获取。但是当config配置中心存在的时候不应该从本地获取配置,而是应该从配置中心进行配置。在学习config的时候了解到bootstrap的配置文件,则对bootstrap与application配置文件产生了好奇。他们的家在顺序以及配置覆盖的情况到底是怎么样的呢?

    过程

    一、首先去百度网上的答案,但是大部分都引用了以下两条作出答案

    https://cloud.spring.io/spring-cloud-static/Greenwich.SR1/single/spring-cloud.html#_the_bootstrap_application_context

    Spring Cloud 构建于 Spring Boot 之上,在 Spring Boot 中有两种上下文,一种是 bootstrap, 另外一种是 application, bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。bootstrap 主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。这两个上下文共用一个环境,它是任何Spring应用程序的外部属性的来源。bootstrap 里面的属性会优先加载,它们默认也不能被本地相同配置覆盖。

    抱歉没有阅读原文直接应用的,从字面意思理解bootstrap有限加载,没问题。但是外部属性加载并不会覆盖本地属性就产生问题了,我无法在本地文件存在的情况下对属性进行更新。接下来我进行了实验。
    二、当不存在配置中心时候bootstrap与application并存的时候取相同属性,在实验中的出结论,bootstrap优先加载但属性依然被application覆盖。
    接下来又进行了一个实验,bootstrap、application与配置中心同时存在的时候发现配置中心的属性会覆盖前两个。

    结论

    通过两次实验的出,bootstrap、application与配置中心同时存在时,加载顺序为
    bootstrap>>application>>配置中心
    同时后者覆盖前者。
    注:
    spring boot版本为 2.1.2.RELEASE
    spring cloud版本为Greenwich.SR2

    相关文章

      网友评论

          本文标题:关于application和bootstrap的加载顺序及区别问

          本文链接:https://www.haomeiwen.com/subject/xsrxoctx.html