欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

程序员文章站 2022-06-29 13:49:06
SpringCloud全家桶中的分布式配置中心SpringCloudConfig, 它使用git来管理配置文件, 在修改配置文件后只需要调用一个接口就可以让新配置生效, 非常方便. SpringCloudConfig分为两部分, 服务端和客户端, 服务端是用来提供配置文件信息的, 而客户端是用来使用 ......

springcloud全家桶中的分布式配置中心springcloudconfig, 它使用git来管理配置文件, 在修改配置文件后只需要调用一个接口就可以让新配置生效, 非常方便.

springcloudconfig分为两部分, 服务端和客户端, 服务端是用来提供配置文件信息的, 而客户端是用来使用配置文件信息的, 我们接下来就开始集成.

一、springcloudconfig服务端

1. 新建一个module

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 2. 选择springboot工程

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 3. 起个名字

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 4. 选择配置中心服务端

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

5.  选择注册中心客户端

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 6. 配置application.properties文件

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

# 服务端口
server.port = 8088
# 填写注册中心服务器地址
eureka.client.service-url.defaultzone = http://localhost:8081/eureka
# 注册配置中心别名
spring.application.name = service-config
# 配置存储地址(git)
spring.cloud.config.server.git.uri = https://gitee.com/xxx/spring-cloud-config
# 存储文件夹
spring.cloud.config.server.git.search-paths = myconfig
# git主分支
spring.cloud.config.label = master

7. 配置service-config启动文件

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

// 开启注册中心客户端
@enableeurekaclient
// 开启配置中心服务器
@enableconfigserver

 

二、git仓操作

1. 新建git仓

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 填写信息

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 2. 新建文件夹

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 命名文件夹

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 3. 新建文件

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 写入信息

文件的命名是有规范的, [服务名称-环境. properties]否则你的服务器无法读取配置文件, 我们来查看一下service-a的配置文件名称

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 所以我们的配置文件应该叫

service-objcat-a-dev. properties

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 

三、启动服务访问

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 运行无问题

 

四、springcloudconfig服务端

service-a开启分布式配置服务

1. 首先在service-a的pom中添加依赖

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

<!-- 分布式配置中心客户端依赖 -->
<dependency>
     <groupid>org.springframework.cloud</groupid>
     <artifactid>spring-cloud-config-client</artifactid>
</dependency>

2. 修改配置文件

application.yml修改成bootstrap.yml这里说一下, 这两个名字都是应用的配置文件, 但是bootstrap.yml会先执行, 其次是配置分布式配置中心服务器的规范就是在bootstrap.yml中配置的, 这俩个配置文件可以共存, 这里为了方便起见, 所以直接就改名了, 我们继续

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

# 分布式配置中心
  cloud:
    config:
      profile: dev
      discovery:
        enabled: true
        service-id: service-config

注意别名一定要跟你上面配置服务器的名称一致, profile千万不要乱写, 写你需要应用配置文件的环境, 还记得我们的配置文件命名方式吗 [服务名-环境.yml]

3. 到这里已经配置完成了, 我们来写个接口验证一下吧!

@value("${name}")
    private string name;

@requestmapping("/hello")
    public string hello() {
        return name;
    }

@value就是从配置文件中读取一个字段, 我们name这个字段是存在服务端的, 所以如果可以读取出来, 就证明分布式配置中心是可以用的, 之后我们来运行一下服务

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 访问接口

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

4. 动态更改

现在我们的配置文件还不能做到远程动态更改, 我们接下来要做的就是线上刷新字段, 不需要重启服务器, 我们首先给service-a导入监控模块的包

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

<dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-actuator</artifactid>
</dependency>

5. 修改配置文件, 在配置文件中增加如下字段 暴露所有endpoints

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

management:
  endpoints:
    web:
      exposure:
        include: "*"

6. 在控制器中配置刷新注解@refreshscope, 只有配置过刷新注解的控制器中的值才会被刷新.

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 7. 重启服务

 8. 修改git上的配置信息

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 9. 再次访问, 发现没有任何变化

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 10. 这里需要调用一个刷新接口即可, 注意一定要使用post请求, 可以使用命令行或者postman.

命令行: 

curl -x post http://localhost:8082/actuator/refresh

postman: 

http://localhost:8082/actuator/refresh

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

 11. 再次访问接口, 成功

springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心