Spring Cloud 之创建配置中心服务-客户端
各个微服务想要使用配置中心服务非常简单,仅需要在bootstrap.yaml(或.properties)文件中稍作配置即可
1.添加依赖
1 | `org.springframework.cloud:spring-cloud-starter-config:${cloud_config}` |
2.配置上下文
bootstrap.yaml中添加
1 | spring: |
注意这里是
bootstrap.yml而不是appliction.yml,因为bootstrap.yml会在应用启动之前读取, 而spring.cloud.config.uri会影响应用启动,关于上下文可参见如下内容.
2.1 启动上下文
Spring Cloud会创建一个Bootstrap Context,作为Spring应用的Application Context的父上下文。初始化的时候,Bootstrap Context负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的Environment。Bootstrap属性有高优先级,默认情况下,它们不会被本地配置覆盖。 Bootstrap context和Application Context有着不同的约定,所以新增了一个bootstrap.yml文件,而不是使用application.yml (或者application.properties)。保证Bootstrap Context和Application Context配置的分离。
推荐在bootstrap.yml or application.yml里面配置spring.application.name. 你可以通过设置spring.cloud.bootstrap.enabled=false来禁用bootstrap。
2.2 应用上下文层次结构
如果你通过SpringApplication或者SpringApplicationBuilder创建一个Application Context,那么会为spring应用的Application Context创建父上下文Bootstrap Context。在Spring里有个特性,子上下文会继承父类的property sources and profiles ,所以main application context 相对于没有使用Spring Cloud Config,会新增额外的property sources。额外的property sources有:
- “bootstrap” : 如果在
Bootstrap Context扫描到PropertySourceLocator并且有属性,则会添加到CompositePropertySource。Spirng Cloud Config就是通过这种方式来添加的属性的,详细看源码ConfigServicePropertySourceLocator。下面也也有一个例子自定义的例子。 - “applicationConfig: [classpath:bootstrap.yml]” ,(如果有
spring.profiles.active=production则例如applicationConfig: [classpath:/bootstrap.yml]#production): 如果你使用bootstrap.yml来配置Bootstrap Context,他比application.yml优先级要低。它将添加到子上下文,作为Spring Boot应用程序的一部分。下文有介绍。
由于优先级规则,Bootstrap Context不包含从bootstrap.yml来的数据,但是可以用它作为默认设置。
bootstrap.yml是由spring.cloud.bootstrap.name(默认:”bootstrap”)或者spring.cloud.bootstrap.location(默认空)
覆盖远程属性
property sources被bootstrap context 添加到应用通常通过远程的方式,比如”Config Server”。默认情况下,本地的配置文件不能覆盖远程配置,但是可以通过启动命令行参数来覆盖远程配置。如果需要本地文件覆盖远程文件,需要在远程配置文件里设置授权spring.cloud.config.allowOverride=true(这个配置不能在本地被设置)。一旦设置了这个权限,你可以配置更加细粒度的配置来配置覆盖的方式,
比如:
1 | spring: |
源文件见PropertySourceBootstrapPropertie
3.启动服务,大功告成.
端口号采用配置中心相应配置文件的端口
启动后访问 http://localhost:port/say
** 示例代码 **
参考