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;
}
}