Spring Cloud Config学习笔记

本文详细介绍了SpringCloudConfig的配置中心搭建,包括服务端配置、加解密设置以及客户端的使用。通过示例展示了如何在服务端和客户端进行数据加密解密,并解释了手动动态刷新配置的方法。此外,还提到了配置文件的存储位置、超时时间和重试机制等关键参数。
摘要由CSDN通过智能技术生成

Spring Cloud Config 可以集中管理所有环境中应用程序的外部属性。支持热刷新,支持属性加解密。

一、服务端

1.1 服务搭建

  1. 在github、码云等网站创建一个项目;
  2. 本地创建项目,引入依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
  1. 配置文件application
spring:
  cloud:
    config:
      server:
        encrypt:
          enabled: false  # 是否开启解密,默认true开启,关闭后在服务端不解密,可以在客户端解密
        git:
          uri: https://gitee.com/xxx/spring-cloud-config.git  # gitee仓库路径
          username: xxx  # gitee用户名
          password: xxx!  # gitee密码
          search-paths:
            - spring-cloud-config  # 从哪些目录下搜索配置文件
          skip-ssl-validation: false  # 是否跳过配置服务器对 Git 服务器的 SSL 证书的验证,默认false
          timeout: 120  #  HTTP 连接的超时时间(以秒为单位)
          force-pull: true  # 强制克隆远程 git 存储库到本地,以防本地副本变脏
          delete-untracked-branches: true  # 从本地存储库中强制删除未跟踪的分支,即如果远程分支已删除,则删除本地分支
          refresh-rate: 600  # 配置刷新频率,单位秒
          basedir: D:\java\codes\spring-cloud-config  # 一些操作系统会定期清理临时目录,将Config Server 使用的目录更改为不在系统临时结构中的目录
          clone-on-start: true  # 服务启动时克隆到本地
          default-label: main  # 分支
# 秘钥
encrypt:
  key: mykey
  key-store:
    location: classpath:server.jks  # 秘钥库位置
    password: letmein  # 解密秘钥库的密码
    alias: mytestkey  # 别名
    secret: changeme  # 生成秘钥库的密码
    type: jks  # 要创建的 KeyStore 的类型。默认为jks.

可使用的占位符:{application},{profile},{label}

  1. 开启配置中心,在启动类加上注解
@EnableConfigServer

1.2 加解密

  1. 生成key-store(.jks文件)
 keytool -genkeypair -alias mytestkey -keyalg RSA \
  -dname "CN=Web 服务器,OU=Unit,O=Organization,L=City,S=State,C=US"\
  -keypass changeme -keystore server.jks -storepass letmein
  1. 把.jks文件放到某个位置,如resource下面
  2. 添加配置

如果在服务端解密,配置写在 application.yml
如果在客户端解密,配置写在 bootstrap.yml

# 秘钥
encrypt:
  key: mykey
  key-store:
    location: classpath:server.jks  # 秘钥库位置
    password: letmein  # 解密秘钥库的密码
    alias: mytestkey  # 别名
    secret: changeme  # 生成秘钥库的密码
    type: jks  # 要创建的 KeyStore 的类型。默认为jks.
  1. 数据加密

发送请求,获取加密后的数据
curl localhost:8888/encrypt -s -d mysecret
其中-d后面是要加密的数据

解密:
curl localhost:8888/decrypt -s -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda

  1. 放入配置中心

在加密数据之前拼接上 {cipher},如:

spring:
  datasource:
    username: dbuser
    password: '{cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ'

二、客户端

  1. 引入依赖
<dependency>
   <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
  1. 在bootstrap.yml配置文件配置
spring:
  cloud:
    config:
      # 找到分支为main的配置文件config-dev.yml
      label: main  # 分支
      name: config  # 配置文件名称
      profile: dev  # 环境
      uri: http://localhost:3344  # 配置中心地址
      fail-fast: true  # 开启快速失败,如果无法连接配置服务器,就服务启动失败,。默认FALSE
      request-read-timeout: 2000
      request-connect-timeout: 2000
      # 重试
      retry:
        initial-interval: 1000  # 初始间隔,默认1000ms
        max-attempts: 6  # 最大重试次数,默认6
        max-interval: 2000  # 最大间隔,单位ms
        multiplier: 1.1  # 乘数,默认1.1
# 秘钥
encrypt:
  key: mykey
  key-store:
    location: classpath:server.jks  # 秘钥库位置
    password: letmein  # 解密秘钥库的密码
    alias: mytestkey  # 别名
    secret: changeme  # 生成秘钥库的密码
    type: jks  # 要创建的 KeyStore 的类型。默认为jks.

三、手动动态刷新

  1. 引入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  1. 在bootstrap.yml配置文件配置
# 暴露监控端口
management:
  endpoints:
    web:
      exposure:
        include: "*"
  1. 在配置类等用到了配置文件的类上加上动态刷新注解:
@RefreshScope
  1. 通过curl刷新服务(必须是post请求):
curl -X POST http://localhost:8001/actuator/refresh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值