SpringCloud 学习之 config

啊啊啊啊好久没学习了!🤣这段时间我在干什么!!!

Spring Cloud Config

就是把配置文件用git或者svn统一管理起来,好处多多比如…

  1. 集中管理微服务配置,当微服务数量众多的时候,使用这种方式会更为方便
  2. 通过Git管理微服务配置,方便追踪配置修改记录
  3. 可以在应用运行期间修改配置,微服务能够自动更新配置

    摘录自mrbird.cc

创建config-server

还是从引入依赖开始…

1
2
3
4
5
6
7
8
9
10
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>

然后写配置文件加注解= =老套路
yml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server:
port: 9999

spring:
application:
name: config
cloud:
config:
server:
git:
uri: https://git.coding.net/xxx/config.git
username: xxx
password: xxx

eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8761/eureka/

在启动类上加上@EnableDiscoveryClient@EnableConfigServer,因为配置中心本身也是一个服务嘛,当然要注册到eureka上啦,然后EnableConfigServer标记这是配置中心的服务

yml的的配置说明(emmm有点多挑点重点记一下就好…前缀spring.cloud.config.server.git):

  1. uri: 仓库地址
  2. username: 仓库用户名
  3. password: 仓库密码 划重点!我Git的密码最后是小数点所以死活连不上,有解决办法的大佬请联系我!

然后在任意平台新建git仓库,传几个配置文件,比如eureka-dev.yml

然后放问urlhttp://localhost:9999/eureka-dev.yml就能看到配置文件了,可以多传几个看看,我懒

url格式:

/{name}-{profile}.yml

/{label}/{name}-{profile}.yml label是分支名

创建config-client

改造一下之前的provide项目,在pom文件里面添加config-client的依赖

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

修改yml配置,添加:

1
2
3
4
5
6
7
8
cloud:
config:
discovery:
enabled: true
service-id: CONFIG #找eureka...也可以用uri
profile: dev #dev环境的配置
#uri: config地址
#label: 分支名

🐇 记得把application.yml 改成bootstrap.yml

事先在git上传了两个配置,分别是provide-dev.yml和provide-test.yml,里面只配置了一个字段env,写个接口试试有没有正确拉取到

1
2
3
4
5
6
7
@Value("${env}")
String env;

@GetMapping("/env")
public String getEnv(){
return env;
}

启动后访问/env正确返回dev,把profile改成test,重启后刷新页面返回的是test,说明已经从配置中心拉取到配置了

一些值得记一下的东西

  1. config-server 可以配置xxx.git.basedir 来配置git拉取下来放在哪
  2. 如果git仓库有provide.yml、provide-dev.yml和provide-test.yml的话,拉取dev或者test配置的时候会把provide也拉取下来合并,所以provide里面可以放公共的配置

自动配置刷新留着下次…