SpringCloud统一配置中心Config Client
Config Client
改造client-two,在pom文件中加入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
将application.yml重命名为bootstrap.yml,同时更改内容如下
spring:
application:
name: client2
cloud:
config:
discovery:
enabled: true
service-id: CONFIG
profile: dev
spring.application.name对应着https://gitee.com/swlfly/config-repo-demo仓库中的文件名
spring.cloud.config.discovery.service-id:对应着配置中心的名称
spring.cloud.config.profile:对应着环境
当服务启动时根据bootstrap.yml的配置,这里将会拉取client2-dev.yml里的配置
为了验证是否成功拉取client2-dev.yml里的配置,我们新建一个EnvController来做测试
@RequestMapping("env")
@RestController
public class EnvController {
@Value("${env}")
private String env;
@GetMapping("print")
public String print(){
return env;
}
}
分别启动服务注册中心server,统一配置中心服务config,client-two,访问http://localhost:8081/env/print将会在浏览器返回dev
更改默认端口
从一开始我们的服务注册中心用的就是默认端口8761,当我们不使用默认端口时会怎么样呢,这里我们将端口改为8762,再将config里的配置也改为8762,client2-dev里的配置也改为8762,然后重新启动,我们会发现client-two启动失败,我们发现client-two获取配置的路径不对,如下
c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://localhost:8888
从http://localhost:8888这个地址去获取配置了,之前使用8761端口能行是因为8761是默认配置,解决这个问题就是把client2-dev.yml里的地址配置拿出来放到bootstrap.yml中,更改后的client2-dev.yml与bootstrap.yml如下
spring:
application:
name: client2
server:
port: 8081
env: dev
spring:
application:
name: client2
cloud:
config:
discovery:
enabled: true
service-id: CONFIG
profile: dev
eureka:
client:
service-url:
defaultZone: http://localhost:8762/eureka #注册服务器地址
同时将client2.yml清空,因为client-two拉取配置时会同时拉取client2.yml与client2-dev.yml连个文件里的配置,然后合并
访问http://localhost:8081/env/print浏览器返回dev
更多技术文章可关注个人公众号: 码农Fly
![](https://img.haomeiwen.com/i7892353/8289a855c9b3452f.jpg)