实现远程配置管理—Config组件(Spring Cloud系列七)

妖精的绣舞 提交于 2020-02-27 09:51:44

第一步:在远程Git仓库创建配置信息

我在码云上创建一个项目叫config-demo

新建一个分支,分支名为config-demo,起点是Master

然后在config-demo分指下创建项目的配置文件

我这里创建的配置文件叫dm-gateway-zuul-dev.properties,因为用于测试的Config Client项目名叫dm-gateway-zuul

配置文件内容只有一个token=false

为了更好区别,在master分支下也同上一样创建了一个配置文件,为了区分这里token设为true

第二步:创建Config Server项目加载远程配置

1.首先创建项目

一直next直到finish

 

2.修改pom文件

只需要修改springboot和springcloud版本,和注意下引入的组件就可以了

 

3.配置application配置文件

uri是项目的地址

search-paths是保存配置文件的文件夹

注意下端口号避免冲突

 

4.application启动类增加两个注解

加入注解@EnableDiscoveryClient和@EnableConfigServer

 

启动项目测试(只需启动一个项目就可以测试到)

通过测试可以看出访问的格式是:localhost:端口/项目名/版本/分支名

如果访问的分支是master分支的则后面不需要加上分支名

测试master分支的,我们上面在master创建的配置文件是token=true

访问:localhost:7900/dm-gateway-zuul/dev/

 

测试springcloud分支的,我们上面在master创建的配置文件是token=false

访问:localhost:7900/dm-gateway-zuul/dev/springcloud

 

 

第三步:在Config Client中使用远程配置

Config Client是指:使用远程配置的项目

1.在ConfigClient项目的pom文件中加入Config组件

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

 

2.配置bootstrap.yml文件

1.首先在application配置文件同级下创建bootstrap.yml文件

2.配置Config Server信息

先把application.yml配置的application.name移到bootstrap.yml,application.yml就无需配置application.name

红色方框内的内容是从application.yum文件剪切过来

配置文件配置的访问路径是uri+applicatoin.name+profile+label

凑成了前面测试的访问路径:localhost:7900/dm-gateway-zuul/dev/springcloud

 

3.使用远程配置的参数

为了方便测试,加了控制台输出

 

启动所有项目测试,但是现在在码云上更新参数是不会更新配置的,下面实现变更后刷新

 

 

第四步:在远程配置信息变更后实现刷新

1.添加依赖

在Config Client项目的pom文件加入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

 

2.添加注解

在需要注入远程配置的类加上@RefreshScope注解

 

3.配置application文件

关闭安全机制

 

然后启动项目测试

第一次测试是false

修改码云上的配置文件后,第二次测试也是false

这是因为只有码云上的文件刷新了,但是项目里不知道码云上的文件已经刷新了,所以要手动访问一下

访问localhost:7600/refresh

 

最后再测试一下

已经刷新为true了,如果想实现自动刷新,可使用Spring Cloud Bus组件实现

 

 

第五步:对远程配置信息进行加密

 

1.安装JCE

JCE是java提供的用于加密和解密的工具包

下载了JEC工具包之后,把里面两个JAR文件复制到jre\lib\security文件夹下,如果已存在则直接覆盖

ps:如果像我这种情况,不知道环境是使用哪个的话,直接两个都复制进去好了

 

2.添加密钥配置

在Config Server项目中新建bootstrap.yml配置文件

我这里配置的密钥是dm

 

3.使用Postman测试下加密和解密

访问localhost:7900/encrypt/status  是查看加密功能状态的端点,需要使用GET请求

访问localhost:7900/key  是查看密钥的端点,需要使用GET请求

访问localhost:7900/encrypt 是对请求的Body内容进行加密的端点,需要使用POST请求

访问localhost:7900/decrypt 是对请求的Body内容进行解密的端点,需要使用POST请求

 

使用/encrypt加密

 

使用/decrypt解密

 

第六步:把加密后的结果存储到码云

{cipher}前缀用来标注该内容是一个加密的值

 

启动所有项目测试:

因为改了码云上的配置文件,所以要刷新一下,先请求一下localhost:7600/refresh,刷新成功

请求一下后台

结果:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!