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;
    }
}
posted @ 2022-07-28 11:36  浪迹天涯的派大星  阅读(238)  评论(0)    收藏  举报