简介

Spring Cloud Config为分布式系统中的外部化配置提供了服务器和客户端支持。使用配置服务器,您有一个中心位置来管理跨所有环境的应用程序的外部属性。

准备

新建两个项目

  • config-server
  • config-client
Config-Server

核心依赖

  		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

开启配置中心

@SpringBootApplication
@EnableConfigServer //开启配置中心服务
public class ConfigApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigApp.class,args);
    }
}

bootstrap.yml

server:
  port: 8770

spring:
  application:
    name: config-server
#  profiles:
#    active: native # 开启此项则使用本地配置
  cloud:
    config:
      name: springcloud-config     #{application}
      server:
        git:
          uri: http://11.11.150.35:30200/DuebassLei/springcloud-config.git
          username: DuebassLei
          password: xxxxxxxxxx

http 请求地址和资源映射对应如下:

  • /{application}/{profile}[/{label}]
  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties

{application}映射客户端的"spring.application.name"
{profile}映射客户端的"spring.profiles.active"(逗号分隔列表)
{label}它是服务端的特性,标记版本的一组配置文件

Git远程仓库添加配置文件

在GitLib中新建 springcloud-config-dev.yml文件
《SpringCloud》 6 Config(配置中心)_Java

测试

访问:

http://localhost:8770/springcloud-config/dev
《SpringCloud》 6 Config(配置中心)_Java_02
到此Config-server设置成功。

Config-Client

核心依赖

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

bootstrap.yml

server:
  port: 8771
spring:
  application:
    name: config-client
  cloud:
    config:
      name: springcloud-config 
      profile: dev
      uri: http://localhost:8770/ # config-server中心项目地址
      label: master

测试

展示从远程Config获取到的配置数据信息

@SpringBootApplication
@RestController
public class ConfigClientApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApp.class,args);
    }

    @Value("${order.name}")
    String orderName;

    @RequestMapping("/test")
    public String test() {
        return "client ====>>> " + orderName;
    }
}

访问:

http://localhost:8771/test

《SpringCloud》 6 Config(配置中心)_git_03
查看数据,会显示dev配置文件中${order.name}对应内容

结合Eureka

在启动类加入_@EnableDiscoveryClient,与_常规的_Eureka_使用无太大差别,修改 config-clientbootstrap.yml:

server:
  port: 8771
spring:
  application:
    name: config-client
  cloud:
    config:
      profile: dev
      label: master
      discovery:
        enabled: true
        service-id: config-server #微服务ConfigServer对应的ServerId


删除spring.cloud.config.uri,并添加

discovery:
        enabled: true
        service-id: config-server #微服务ConfigServer对应的ServerId

源码

https://gitee.com/DuebassLei/SpringCloudApp