第一步:在远程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,刷新成功
请求一下后台
结果:
来源:CSDN
作者:重金求子
链接:https://blog.csdn.net/qq_41622603/article/details/104507621