前言

在之前说到的Spring Cloud Config Client程序中都是通过spring.cloud.config.uri 指定Config Server的地址。这种方式Spring Cloud称之为“Config First Bootstrap”。除此之外,还支持一种服务发现的方式,Spring Cloud称之为“Discovery First Bootstrap”。本文将说明如何通过Eureka发现Config Server的服务。

Spring Cloud Config与Eureka配合使用

1.Config Server改造

既然是通过Eureka服务发现来帮助Config Client定位到Config Server,那么必须先将Config Server注册到Eureka上。

a.添加Eureka的依赖

1
2
3
4
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

b.在配置文件指定eureka的serviceUri

1
2
3
4
5
6
7
8
9
spring:
  application:
    name: cloud-config-server
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka
  instance:
    prefer-ip-address: true

注意需要指定Config Server的serviceId(spring.application.name),后面客户端从Eureka是根据serviceId查找Config Server的。

3.在Spring Boot主类增加@EnableEurekaClient

2.Config Client改造

a.添加Eureka的依赖

1
2
3
4
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

b.配置文件增加Config Server的服务发现配置

1
2
3
4
5
6
7
8
9
10
11
12
spring:
  application:
    name: cloud-config-client
  cloud:
    config:
      name: cloud-config
      profile: ${config.profile:dev}
      discovery:
        enabled: true
        service-id: cloud-config-server
      username: user
      password: password123

上面的配置中,discovery.enabled指定是否启用服务发现,service-id指定服务id。

在上一节中说到有2种方式配置会用户名和密码,但如果使用服务发现的话,就只能使用这种单独指定username和password的形式了。

3.在Spring Boot主类增加@EnableEurekaClient

然后依次启动Eureka Server,Config Server和Config Client即可。