Spring Cloud Context:应用程序上下文服务
Spring Boot有一个关于如何使用Spring构建应用程序的观点,例如,它具有通用配置文件的常规位置,并具有用于通用管理和监控任务的端点,Spring Cloud构建于此之上,并添加了一些功能,可能是系统中的所有组件都可能使用或偶尔需要的功能。
Bootstrap应用程序上下文
Spring Cloud应用程序通过创建“引导”上下文来运转,该上下文是主应用程序的父上下文,它负责从外部源加载配置属性以及在本地外部配置文件中解密属性,这两个上下文共享一个Environment
,它是任何Spring应用程序的外部属性来源。默认情况下,引导属性(不是bootstrap.properties
,而是在引导阶段加载的属性)以高优先级添加,因此本地配置无法覆盖它们。
引导上下文使用与主应用程序上下文不同的约定来定位外部配置,你可以使用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的情况下构建相同的上下文,其他属性源是: