SpringCloud学习(九)SpringCloudConfig的配置及使用

1、SpringCloudConfig的作用

优点,各个配置文件可以统一被管理,而且配置更新后,无需重启服务,且配置中心可进行高可用集群
在这里插入图片描述

2、创建Spring-Cloud-Config-Server工程项目

在这里插入图片描述
配置pom信息

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.liulin</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <name>spring-cloud-config-server</name>
    <description>SpringCloud聚合学习工程之配置中心服务</description>

    <parent>
        <groupId>cn.liulin</groupId>
        <version>0.0.1-SNAPSHOT</version>
        <artifactId>spring-cloud-integration</artifactId>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- 配置中心依赖 -->
        <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>
</project>

配置application.yml信息

server:
  port: 8767
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9999/eureka/
spring:
  application:
    name: spring-cloud-config-server
  cloud:
    config:
      server:
        git:
          #服务的git仓库地址
          uri: https://github.com/LLBlood/spring-cloud-integration-config-repo
          #配置文件所在的目录
          search-paths: /**
      #配置文件所在的分支
      label: master
      #git仓库的用户名
      username:
      #git仓库的密码
      password:

启动实例加注解
在这里插入图片描述
向git配置中心仓库添加文件
spring-cloud-demo1-dev.yml

name: lisi
age: 18
sex: man
version: dev

spring-cloud-demo1-prod.yml

name: lna
age: 22
sex: woman
version: prod

启动项目,访问接口
http://127.0.0.1:8767/spring-cloud-demo1/dev
或 http://127.0.0.1:8767/spring-cloud-demo1-dev.yml
或 http://127.0.0.1:8767/master/spring-cloud-demo1-dev.yml
可获取对应返回信息,即配置中心配置成功

在这里插入图片描述

证明配置服务中心可以从远程程序获取配置信息,http请求地址和资源文件映射如下:,可参考

· /{application}/{profile}[/{label}]

· /{application}-{profile}.yml

· /{label}/{application}-{profile}.yml

· /{application}-{profile}.properties

· /{label}/{application}-{profile}.properties
application即文件应用名, profile就是dev/prod后缀名,label则是分支名

3、改造Spring-cloud-demo1为配置中心客户端

添加pom依赖

<dependency>
   	<groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

增加bootstrap.yml配置信息,bootstrap.yml比application.yml优先加载
application.yml配置

server:
  port: 8762

spring:
  application:
    name: spring-cloud-demo1

bootstrap.yml配置

eureka:
  client:
    service-url:
      defaultZone: http://localhost:9999/eureka/
spring:
  cloud:
    config:
      #配置文件所在分支
      lable: master
      profile: prod
#      #配置服务中心
#      uri: http://localhost:8767/
      #discovery必须在该工程注册到eureka中后才能起效果
      discovery:  #配置服务发现
        enabled: true  #是否启动服务发现
        serviceId: spring-cloud-config-server #服务发现(eureka)中,配置中心(config server)的服务名


其中有两种配置中心的加载方法
uri和discovery
添加数据读取类

package cn.liulin.springclouddemo1.configuration;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

/**
 * cn.liulin.springclouddemo1.configuration$
 *
 * @author ll
 * @date 2021-02-24 16:17:24
 **/
@Configuration
@Data
public class SpringCloudDemoConfig {

    @Value("${name}")
    private String name;

    @Value("${age}")
    private Integer age;

    @Value("${sex}")
    private String sex;

    @Value("${version}")
    private String version;

    @Override
    public String toString() {
        return "SpringCloudDemoConfig{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", version='" + version + '\'' +
                '}';
    }
}

@RequestMapping("/getConfigInfo")
public String getConfigInfo() {
    return springCloudDemoConfig.toString();
}

4、启动服务注册中心,配置中心服务,配置中心客户端

访问http://127.0.0.1:8762/getConfigInfo
在这里插入图片描述
配置中心服务有效

5、SpringCloudConfig配置文件内容加密解密

1、对称加密
java本身提供了一套用于加密解密的包JCE(Java Cryptography Extension),这些包提供对称、非对称、块和流密码的加密支持,但是默认的JCE是有长度限制的,需要下载不限长度的JCE
适用JDK8的JCE补丁,需要oracle账号

在这里插入图片描述

将 local_policy.jar 和 US_export_policy.jar 两个文件拷贝到 JDK 的安装目录下,具体位置是 %JAVA_HOME%\jre\lib\security ,如果该目录下有同名文件,则直接覆盖即可。
然后在之前的Spring-cloud-config-server工程中添加bootstrap.yml配置文件,添加配置内容

encrypt:
  key: 666666

再启动项目,访问url: 127.0.0.1:8767/encrypt/status
如果访问这个接口返回的是ok,说明是没有问题的
在这里插入图片描述
测试加密解密
对普通文本zhazhazha加密
post访问url: http://127.0.0.1:8767/encrypt
在这里插入图片描述

然后进行结果反解密
post访问url: http://127.0.0.1:8767/decrypt
在这里插入图片描述
加密解密成功
在git仓库中,修改配置文件为加密字符串,需要添加前缀{cipher}

name: '{cipher}f772f183d2cbd8f83e160f54cda6f65f19a2d4ac1365e5f08a42aff6ee459d93'
age: 18
sex: man
version: dev

启动Spring-cloud-demo1工程,访问url: http://127.0.0.1:8762/getConfigInfo
在这里插入图片描述
加密解密成功!
2、非对称加密
非对称加密要求我们先有一个密钥,密钥的生成我们可以使用 JDK 中自带的 keytool。keytool 是一个 Java 自带的数字证书管理工具 ,keytool 将密钥(key)和证书 (certificates) 存在一个称为 keystore 的文件中
cmd生成密钥命令
keytool 所在位置 %JAVA_HOME%\jre\bin

keytool -genkeypair -alias config-server -keyalg RSA -keystore D:\keyStore\config-server.keystore

在这里插入图片描述

  • genkeypair 表示生成密钥对
  • alias 表示 keystore 关联的别名
  • keyalg 表示指定密钥生成的算法
  • keystore 指定密钥库的位置和名称
    密钥库口令自定义,此时为123456
    将D:\keyStore\config-server.keystore文件直接拷贝到spring-cloud-config-server项目的 resources 下
    在 spring-cloud-config-server 的 bootstrap.yml 文件中,添加如下配置
encrypt:
  #签名证书
  key-store:
    #别名
    alias: config-server
    location: config-server.keystore
    password: 123456
    secret: 123456

启动项目
访问加密接口: http://127.0.0.1:8767/encrypt在这里插入图片描述
访问解密接口: http://127.0.0.1:8767/decrypt
在这里插入图片描述
在git仓库中,修改配置文件为加密字符串,需要添加前缀{cipher}

name: '{cipher}AQBGu3szNse3TLS7ZZPlNM4+RevY7NZHBzOj0m6Q3110Y3jXarU8Q8X/jRri1NeIjJgKpSoDtcuz/bigeDu7pBesV/hCOOJPjxjou5z/aHB7Lj2E+aAMKnxCvMf2HYqBQ0vecbY7rAJHj+ChA1GmJ7nBPR2GBpZT5ShyHlpaPGthYpiVuwI2wQfWs6w5OLzM5Cjp1zLRFEt70BJdK4c5L711xufEENjweaZXnqf/NbUWH/oQ8UsFCkODGhuvu+6cmLZIogRsdFuHUWmidb0r4dewfD1PWewyQOrsT5ItaLwK/6wEJA1p8oprpsWKZF7hdXyf65SpIT3ittgmeomaL0N70efOtZfgW2SWIonsqMp9+cxSPPTeYextRRD/3BlmEhM='
age: 18
sex: man
version: dev

启动Spring-cloud-demo1工程,访问url: http://127.0.0.1:8762/getConfigInfo
在这里插入图片描述

加密解密成功!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值