Spring Boot对于如何使用Spring构建应用程序有一个看法:例如它具有常规配置文件的常规位置,以及用于常见管理和监视任务的端点。Spring Cloud建立在此之上,并添加了一些可能系统中所有组件将使用或偶尔需要的功能。

引导应用程序上下文

一个Spring Cloud应用程序通过创建一个“引导”上下文来进行操作,这个上下文是主应用程序的父上下文。开箱即用,负责从外部源加载配置属性,还解密本地外部配置文件中的属性。这两个上下文共享一个Environment,这是任何Spring应用程序的外部属性的来源。Bootstrap属性的优先级高,因此默认情况下不能被本地配置覆盖。

引导上下文使用与主应用程序上下文不同的外部配置约定,因此使用bootstrap.yml application.yml(或.properties)代替引导和主上下文的外部配置。例:

bootstrap.yml

spring: application: name: foo cloud: config: uri: ${SPRING_CONFIG_URI:http://localhost:8888} 如果您的应用程序需要服务器上的特定于应用程序的配置,那么设置spring.application.name(在bootstrap.yml或application.yml)中是个好主意。

您可以通过设置spring.cloud.bootstrap.enabled=false(例如在系统属性中)来完全禁用引导过程。

应用程序上下文层次结构

如果您从SpringApplication或SpringApplicationBuilder构建应用程序上下文,则将Bootstrap上下文添加为该上下文的父级。这是一个Spring的功能,即子上下文从其父进程继承属性源和配置文件,因此与不使用Spring Cloud Config构建相同上下文相比,“主”应用程序上下文将包含其他属性源。额外的财产来源是:

“bootstrap”:如果在Bootstrap上下文中找到任何PropertySourceLocators,则可选CompositePropertySource显示为高优先级,并且具有非空属性。一个例子是来自Spring Cloud Config服务器的属性。有关如何自定义此属性源的内容的说明,请参阅 下文。

“applicationConfig:[classpath:bootstrap.yml]”(如果Spring配置文件处于活动状态,则为朋友)。如果您有一个bootstrap.yml(或属性),那么这些属性用于配置引导上下文,然后在父进程设置时将它们添加到子上下文中。它们的优先级低于application.yml(或属性)以及作为创建Spring Boot应用程序的过程的正常部分添加到子级的任何其他属性源。有关如何自定义这些属性源的内容的说明,请参阅下文。

由于属性源的排序规则,“引导”条目优先,但请注意,这些条目不包含来自bootstrap.yml的任何数据,它具有非常低的优先级,但可用于设置默认值。

您可以通过简单地设置您创建的任何ApplicationContext的父上下文来扩展上下文层次结构,例如使用自己的界面,或使用SpringApplicationBuilder方便方法(parent(),child()和sibling())。引导环境将是您创建自己的最高级祖先的父级。层次结构中的每个上下文都将有自己的“引导”属性源(可能为空),以避免无意中将值从父级升级到其后代。层次结构中的每个上下文(原则上)也可以具有不同的spring.application.name,因此如果存在配置服务器,则不同的远程属性源。普通的Spring应用程序上下文行为规则适用于属性解析:子环境中的属性通过名称和属性源名称覆盖父项中的属性(如果子级具有与父级名称相同的属性源,一个来自父母的孩子不包括在孩子中)。

请注意,SpringApplicationBuilder允许您在整个层次结构中共享Environment,但这不是默认值。因此,兄弟情境尤其不需要具有相同的资料或财产来源,尽管它们与父母共享共同点。

源码来源:http://minglisoft.cn/honghu/technology.html

Spring Cloud教程 (二)应用程序上下文服务层次结构相关推荐

  1. Spring Cloud 参考文档(Spring Cloud Context:应用程序上下文服务)

    Spring Cloud Context:应用程序上下文服务 Spring Boot有一个关于如何使用Spring构建应用程序的观点,例如,它具有通用配置文件的常规位置,并具有用于通用管理和监控任务的 ...

  2. 破甲两千六 Spring Cloud 教程(三):添加Spring Cloud 的 Netflix Eureka 插件,实现服务端、客户端的发现与注册

    写在前面: Spring Cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等. 5大常用组件: 服务发现 ...

  3. Spring Cloud Eureka(二)注册一个服务的提供者

    Spring Cloud Eureka(二)注册一个服务的提供者 注册一个服务的提供者 在上一篇中,当启动项目并访问localhost:1111时,发现该注册中心还没有注册任何服务.所以现在来搞一个服 ...

  4. 【Java学习路线之JavaWeb】Spring Cloud教程(非常详细)

    文章目录 读者 阅读条件 微服务是什么 微服务,我们可以从字面上去理解,即"微小的服务",下面我们从"服务"和"微小"两个方面进行介绍. 微 ...

  5. spring cloud java b2b2c o2o分布式 微服务电子商务平台

    大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 需要JAVA Spring Cloud大型企业分布式 ...

  6. Spring Cloud Eureka 入门 (三)服务消费者详解

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "真正的进步 ...

  7. Spring Cloud教程– Spring Cloud Config Server简介

    问题 SpringBoot在通过属性或YAML文件外部化配置属性方面提供了很大的灵活性. 我们还可以使用特定于配置文件的配置文件(例如application.properties , applicat ...

  8. Spring Cloud教程 第七弹 spring cloud openfeign

    更多Spring与微服务相关的教程请戳这里 Spring与微服务教程合集 1.概述 1.1.Feign是什么 feign是一个声明式的web service客户端,它使得编写web service客户 ...

  9. Spring Boot教程(二十):Spring Boot使用String Task定时任务

    一.JAVA常见的几种定时任务比较 Timer:jdk自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让程序按照某一个频度执行, ...

最新文章

  1. 单片机can通信可以接多少个设备_51单片机的多机并行通信系统应用
  2. python不对字符串进行转义
  3. Java基础学习总结(12)——一哈希编码HashCode
  4. 设计模式(结构型模式)——享元模式(Flyweight)
  5. 为ActiveX制作数字签名 -- 介绍 (引)
  6. 【HDU - 5881】Tea(思维,找规律)
  7. rabbitmq接口异常函数方法_RabbitMQ监控(三):监控队列状态
  8. springboot项目jar冲突问题解决
  9. NUnit单元测试笔记
  10. php 非常简单的导入sql文件
  11. hadoop2.4.1源码在64位系统编译过程中遇到的几个错误及解决方法
  12. 考研数据结构(3)笔记
  13. matlab调用摄像头人脸识别,matlab-调用摄像头人脸识别
  14. 51nod 1534 棋子游戏(博弈)
  15. layui官方文档保存
  16. 散度和旋度的物理意义是什么?
  17. 微俱聚平台更新日志jquery时间轴特效
  18. 高可靠环境 FileNet 系统介绍和应用实例
  19. 原来做图标这么简单!
  20. 完整的高性能PHP应用服务器appserver

热门文章

  1. 定时任务的选型及改造
  2. 特斯拉自动驾驶遭遇中国性价比强敌!纽劢(mài)L3方案发布,成本1万3
  3. 要让人人能AI的百度EasyDL,现在怎么样了?
  4. 视频直接变漫画!GAN又有了新玩法 | Demo+代码+论文
  5. 弹琴、cosplay、打羽毛球……现在的机器人都是戏精丨世界机器人大会
  6. 脑波控制机械手,双手打字也无法自证清白| Science Robotics
  7. 在硅谷谈AI不够有创意,到苹果开吐槽大会 | 跟着李开复去硅谷
  8. js中的正则表达式(2)
  9. android开关控件Switch和ToggleButton
  10. 系统封装教程集合电子书