spring-cloud-alibaba集成nacos配置中心
首先需要安装nacos,我这边是docker部署的nocas,安装步骤这里不多说,需要的见另一篇文章,下面开始正文。
1、依赖的引入
如果是直接引入的 spring-cloud-alibaba,不需要指定下面依赖的版本。
<!--nacos配置--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!--nacos服务发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
这里依赖的springboot和cloud的版本如下:
<spring-boot.version>2.3.7.RELEASE</spring-boot.version> <spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
2、修改配置文件
项目初始生成的是application.properties文件,这里是删掉后,新建的bootstrap.yml文件
spring: application: name: sentinel-demo cloud: nacos: #nacos的服务发现 discovery: #nacos地址,默认端口是8848 server-addr: 127.0.0.1:8848 #分组名 group: 'DEFAULT_GROUP' #命名空间的ID namespace: 'afa90812-db76-40c2-a23d-b35d07a2e7b7' #nacos的用户名和密码,默认都是nacos username: nacos password: nacos #nacos的配置中心 config: server-addr: 127.0.0.1:8848 namespace: 'afa90812-db76-40c2-a23d-b35d07a2e7b7' group: 'DEFAULT_GROUP' username: nacos password: nacos file-extension: yml profiles: active: dev
在上面我们指定了spring.profiles.active=dev
所以需要新建一个bootstrap-dev.yml文件
spring: application: name: sentinel-demo cloud: nacos: discovery: server-addr: 127.0.0.1:8848 group: 'DEFAULT_GROUP' namespace: 'sentinel-demo' username: nacos password: nacos config: server-addr: 127.0.0.1:8848 namespace: 'sentinel-demo' group: 'DEFAULT_GROUP' username: nacos password: nacos file-extension: yml
3、nacos配置中心
访问http://xxxxx:8848/nacos/index.html 进入自己的nacos Web配置页面,界面如下:
a、初始进去列表是空的,上方的命名空间只有一个public
b、可以在默认的命名空间下加配置文件,但是一般会自己建一个,以服务名命名,方便管理,我这边建了一个sentinel-demo的命名空间
c、在当前命名空间下新建一个配置
d、新建配置
Data ID的命名规则是 ${prefix}-${spring.profiles.active}.${file-extension}
prefix
默认为 spring.application.name
的值,也可以通过配置项 spring.cloud.nacos.config.prefix
来配置,对应上面的bootstrap-dev.yml文件,该值是sentinel-demo
spring.profiles.active
即为当前环境对应的 profile,对应上面的bootstrap.yml 文件,该值是dev
file-exetension
为配置内容的数据格式,对应上面的bootstrap-dev.yml文件,该值是 yml
所以Data ID为 sentinel-demo-dev.yml
4、定位nacos配置文件
所以在程序启动时是如何找到nacos对应的配置文件的?
spring: application: name: sentinel-demo cloud: nacos: config: server-addr: 127.0.0.1:8848 namespace: 'sentinel-demo' group: 'DEFAULT_GROUP' username: nacos password: nacos file-extension: yml
如上,先访问spring.cloud.nacos.config.server-addr这个配置中心地址,然后通过username和password登录进去,找到对应的namespace (sentinel-demo),然后根据group (DEFAULT_GROUP)和Data ID定位到配置文件,Data ID的生成规则点这里 。
5、实体类关联配置文件(动态刷新值)
新建一个类,@Value是读取配置文件的值,参数名称是demo.test,这个值需要我们自己在nacos上配置,如上图 ,加上@RefreshScope后,则每次nacos上重新发布,这里的值都会跟着刷新。
@Component @RefreshScope public class Demo { @Value("${demo.test}") String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示