# 155. 商品详情页动态渲染系统:Spring Cloud 之 Config 统一配置中心

::: 本章内容的深入使用请参考此笔记内容 spring cloud config :::

多个服务共享相同的配置,举个例子、数据库连接、redis 连接,还有别的一些东西,包括一些降级开关,等等

# 创建 config-server

用 config 统一配置中心,config-server/build.gradle

plugins {
    id 'org.springframework.boot' version '2.1.6.RELEASE'
    id 'java'
}

apply plugin: 'io.spring.dependency-management'

ext {
    set('springCloudVersion', "Greenwich.SR2")
}

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    implementation 'org.springframework.cloud:spring-cloud-config-server'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}


dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

使用注解开启服务

@EnableConfigServer
1

application.yml

server:
  port: 9009

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          # uri: http://localhost/mrcode/config.git
          # username: xx
          # password: xx
          # 为了方便本地测试,使用本地目录方式,但是该目录需要是一个 git 仓库
          # 使用 H:\dev\project\mrcode\cache-eshop-config-repo 目录
          # test 作为一个配置仓库,在该目录下初始化为一个 git 仓库
          uri: file:///H:\dev\project\mrcode\cache-eshop-config-repo\test
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

在 test 目录下添加一个文件 application.yml

name: zq
1

添加完成之后,并提交到 git(默认就是 master)

启动项目后,访问地址:http://localhost:9009/name/cc

{
    "name": "name",
    "profiles": [
        "cc"
    ],
    "label": null,
    "version": "72284bf01842408e885bb3a8831e945bf47b5e76",
    "state": null,
    "propertySources": [
        {
            "name": "file:///H:\\dev\\project\\mrcode\\cache-eshop-config-repo\\test/application.yml",
            "source": {
                "name": "zq"
            }
        }
    ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

可以看到,找到了该属性名称,并且还有版本号,与所在配置文件与对应的值

# 改造 greeting-service 使用配置中心

增加依赖

 implementation 'org.springframework.cloud:spring-cloud-starter-config'
1

增加引导配置文件 bootstrap.yml

spring:
  cloud:
    config:
      uri: http://localhost:9009 # 指向刚才创建的配置中心项目
      profile: dev # 默认为 default
1
2
3
4
5

使用刚刚配置中心的 name 属性

@Value("${name}")  // 该属性在 greeting-service 中的配置文件并没有配置
private String name;

@RequestMapping("/name")
public String name() {
    return name;
}
1
2
3
4
5
6
7

重启项目后,访问地址:http://localhost:9005/name 如果返回 zq ,那么表示使用配置中心成功了