cloud config
作用 集中管理配置文件
动态 服务不用重启
image.png
创建一个github仓库
在本地克隆下来
gitbush到某一个目录
git clone https://github.com/linjinboqq/microservice-cloud-config.git
将yml推送到git hub
$ cd microservice-cloud-config # 添加到暂存区
$ git add microservice-config-application.yml # 提交到本地库
$ git commit -m "first commit" microservice-config-application.yml # 推送到远程库origin 的 master 主分支上
$ git push origin master
config工程
写pom
<dependencies>
<!-- Spring Cloud Config配置中心依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
yml
自己的配置地址
https://github.com/linjinboqq/microservice-cloud-config.git
server:
port: 5001
spring:
application:
name: microservice-config
cloud:
config:
server:
git: # 远程库的git地址
uri: https://github.com/linjinboqq/microservice-cloud-config.git
配置类上开启
@EnableConfigServer
测试访问
http://localhost:5001/microservice-config-application-prod.yml
prod 可以改dev 得到不同的配置
测试错误 好像解析出来的配置文件出了问题
问题解决
一直在github上按照控制台提示改yml就行了
客户端的config配置
流程
在bootstrap.yml 中指定了configserver 就是之前那一个微服务
在configserver 中的yml 中指定了 github 仓库
再通过客户端的bootstrap.yml 其他的配置信息
去找对应的配置
spring:
cloud:
config:
name: microservice-config-application #github上的配置名称,注意没有yml后缀名
profile: dev #本次访问的环境配置项
label: master #远程库的分支名
uri: http://localhost:5001 #Config配置中心地址,通过它获取microservice-config-application.yml配置信息
name:是github上的文件名
microservice-config-application #github上的配置名称,注意没有yml后缀名
name: microservice-config-application
两个yml bootstrap 优先级更高
cotroller
package com.mengxuegu.springcloud.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigClient {
@Value("${server.port}")
private String port;
@Value("${spring.application.name}")
private String applicationName;
@GetMapping("/config")
public String config() {
String content = "applicationName: " + applicationName + ", port: " + port;
System.out.println(content);
return content;
}
}
测试:
指定启动的是8080 端口
但加载了github 上的端口之后就变为了4001
实战
将创建一个Eureka服务与Product商品提供者服务,它们两个微服务的配置信息均从GitHub获取 ,从而实现 统一配置分布式管理,完成多环境的变量
config euraka
模块构建
比之前的
多了一个config 客户端依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
在yml 中设置之后
就能获取到配置信息 然后加载
profile: prod #本次访问的环境配置项
没有红的 自我保护机制
productconfig
一样的 pom +config
然后 启动类上写@enable eruaka
就能注册到服务端
没啥可说