文章目录
  1. 1.添加依赖#
  2. 2.配置上下文#
    1. 2.1 启动上下文#
    2. 2.2 应用上下文层次结构#
  3. 3.启动服务,大功告成.#

Spring Cloud 之创建配置中心服务 - 请求端

Spring Cloud 之创建配置中心服务-客户端
  各个微服务想要使用配置中心服务非常简单,仅需要在bootstrap.yaml(或.properties)文件中稍作配置即可

1.添加依赖#

1
`org.springframework.cloud:spring-cloud-starter-config:${cloud_config}`

2.配置上下文#

bootstrap.yaml中添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
spring:
application:
name: config-client
cloud:
config:
# 配置中心地址
uri: http://localhost:8888
# 要应用的配置文件
profile: dev
# 要读取的配置文件名
name: bravo
# 对应服务端security设置的用户名密码
username: pkaq
password: pkaqx

注意这里是bootstrap.yml而不是appliction.yml,因为bootstrap.yml会在应用启动之前读取, 而spring.cloud.config.uri会影响应用启动,关于上下文可参见如下内容.

2.1 启动上下文#

  Spring Cloud会创建一个Bootstrap Context,作为Spring应用的Application Context的父上下文。初始化的时候,Bootstrap Context负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的EnvironmentBootstrap属性有高优先级,默认情况下,它们不会被本地配置覆盖。 Bootstrap contextApplication Context有着不同的约定,所以新增了一个bootstrap.yml文件,而不是使用application.yml (或者application.properties)。保证Bootstrap ContextApplication 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并且有属性,则会添加到CompositePropertySourceSpirng 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 sourcesbootstrap context 添加到应用通常通过远程的方式,比如”Config Server”。默认情况下,本地的配置文件不能覆盖远程配置,但是可以通过启动命令行参数来覆盖远程配置。如果需要本地文件覆盖远程文件,需要在远程配置文件里设置授权
spring.cloud.config.allowOverride=true(这个配置不能在本地被设置)。一旦设置了这个权限,你可以配置更加细粒度的配置来配置覆盖的方式,

比如:

1
2
3
4
5
6
7
spring:
cloud:
config:
# 覆盖任何本地属性
overrideNone: true
# 仅仅系统属性和环境变量
overrideSystemProperties: false

源文件见PropertySourceBootstrapPropertie

3.启动服务,大功告成.#

端口号采用配置中心相应配置文件的端口
启动后访问 http://localhost:port/say

示例代码

参考

支持一下
您得支持,是我前进的动力.