首先需要先创建一个Spring Boot项目,并导入对应版本所需依赖,如Spring Cloud,SpringCloudAlibaba等等。。
(一定要严格参照一下版本的对应,否则后期会引发不可估量的错误)具体请参考官网的版本对应版本发布说明 | Spring Cloud Alibaba (aliyun.com)
本人使用的是2.2.0.RELEASE版本的springboot,以下為Spring Cloud推荐大家使用低版本的依赖
SpringCloud Alibaba 对应的部分版本依赖
依赖加载完成后,初步构建就成功了,接下来就是
配置nacos配置中心
首先先下载对应版本的Nacos Serve,关于各个组件的版本也需要根据官方文档使用对应的版本,因为不同版本的配置方式会有些许不同,笔者使用的2.2.0.RELEASE对应的版本为1.1.4
推荐去GitHub上面下载Releases · alibaba/nacos (github.com)
选择 nacos-server-1.1.4.zip下载。
下载好后解压缩打开bin文件夹,双击startup.cmd
然后打开浏览器输入链接127.0.0.1:8848/nacos
输入账号:nacos 密码:nacos
即可进入到如下页面(如若初次登陆,配置中心应为空)
然后接下来就是加入nacos配置中心的有关依赖
需要在 pom.xml 文件中引入 group ID 为 com.alibaba.cloud 和 artifact ID 为 spring-cloud-starter-alibaba-nacos-config 的 starter:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
创建bootstrap.properties(在读取项目配置时,该文件优先读取)
并写入以下内容
#(项目的模块名,以demo为例)
spring.application.name=dmeo
#配置服务中心
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#开启热刷新
spring.cloud.nacos.config.refresh-enabled=true
然后再次进入到nacos的配置管理页面点击右上角的+号添加新数据集(Data Id)
dataID为项目模块名.properties,例如demo.properties
默认分组
配置格式选择properties
然后写入相关配置信息
如 :
demo.user.name='zhangshang'
demo.user.age=18
然后点击保存
在需要读取配置的类中添加 @RefreshScope 标签(作用于即时刷新)
创建以下属性,并添加@Value标签进行赋值,
然后写一个获取值对应的方法
运行主类,打开浏览器即可发现
在nacos配置中心中修改了配置也无需重启应用即可动态刷新数据,例如在配置中心中修改配置为19
浏览器刷新一下即可更新配置信息
当本地也存在相同的配置时,有配置中心将默认优先使用配置中心的配置,没有则使用默认的本地配置文件
nacos配置中心进阶操作
1.运用命名空间实现配置隔离
在配置中心中,默认的配置命名为public(保留空间),所有默认的新增配置都在public命名空间
可以在命名空间创建多个命名空间,例如test、dev等等命名空间,每创建一个新的命名空间,都会生成对应的命名空间ID
如果想读取该命名空间的配置信息,则需要在bootstrap.properties配置文件中中添加新的属性,如下所示,即可读取该命名空间对应的配置信息。
#命名空间ID
spring.cloud.nacos.config.namespace=(空间命名ID)
#命名空间ID
spring.cloud.nacos.config.namespace=(命名空间)
#命名空间中的分组
spring.cloud.nacos.config.group=(命名空间中的分组)
2.配置集
5.总结
论如何达到不同模块之间的配置隔离,环境隔离,则需要为不同的模块创建对应的命名空间,再在不同的模块命名空间中创建不同的分组,如生产环境分组,测试环境分组等等,即可达到,不同模块之间的配置隔离,生产环境测试环境隔离
---------------------------------------------------------------------------------------------------------------------------------
配置nacos服务注册中心的
引入相关依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
在application.yml文件中添加如下配置
spring:
application:
name: (模块名)
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
使用 @EnableDiscoveryClient 注解开启服务注册与发现功能:
启动应用,在Nacos Serve服务即可查看到该服务
---------------------------------------------------------------------------------------------------------------------------------可能遇到的问题
1.配置中心无法热刷新(及时更新)
解决办法:
1)首先先检查对应的springboot版本与spring cloud版本是否相对应,笔者曾因为版本不对应而导致及时更新失败
2)高版本的springboot 2.4及以上版本需要添加spring-cloud-starter-bootstrap依赖
3)重启nacos
4)查看控制台日志,以及nacos日志(nacos-server-1.1.4\nacos\bin\logs)查看具体报错
2.配置服务注册中心无法注册服务
1)检查导入的依赖是否正确
2)高版本的springboot服务注册方式有些许不同,具体请参考官网文档SpringCloudAlibaba | Spring Cloud Alibaba (aliyun.com)
3)服务注册中心启动失败(具体查看nacos日志),高版本的需要选择以非集群方式启动,打开nacos的bin目录,选择以命令行方式打开,输入以下命令,具体启动方式请参考官网SpringCloudAlibaba | Spring Cloud Alibaba (aliyun.com)
startup.cmd -m standalone
配置nacos服务消费
1.引入open-feign依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.在调用服务的模块编写一个接口添加@FeignClinent注解,告诉springcloud这个接口需要调用远程服务,调用的模块是哪个 (1)声明接口的每个方法都是调用的哪个远程服务的方法请求路径,请求路径要与源接口的请求一致
3.在application中开启远程调用,标注需要扫描的接口
这样就完成了服务消费的配置。
------------------------------------------------------------------------------------------------------------------------
以上内容为本人的学习记录,仅供参考,具体流程请参考官网文档,如有错误,恳请指正,就酱~