nacos集成springcloud实现配置中心功能

1. 在nacos控制台创建namespace

在这里插入图片描述

2. 创建SpringCloud项目

大家注意springboot和springcloud的版本对应,可以去官网查看。

https://spring.io/projects/spring-cloud#learn在这里插入图片描述

<properties>
        <java.version>11</java.version>
        <poi.version>5.2.3</poi.version>
        <easyexcel.version>3.2.1</easyexcel.version>
        <mybatis-plus.version>3.5.3.1</mybatis-plus.version>
        <hutool.version>5.8.15</hutool.version>
        <flowable.version>6.8.0</flowable.version>
        <poi.version>5.2.3</poi.version>
        <easyexcel.version>3.2.1</easyexcel.version>
        <spring-cloud.version>2021.0.7</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
     <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

3. 整合nacos依赖

   <!-- 配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2021.1</version>
        </dependency>
        <!-- 启动获取配置中心配置 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

4. nacos 配置

在nacos控制台添加配置列表:
在这里插入图片描述
我添加了两个配置列表,一个项目的私有配置,一个是公共配置(多项目共享)。

5. bootstrap.yml配置

在项目中创建bootstrap.yml文件,并配置Nacos服务地址以及namespace(没有就不需要配置):

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: 68468122-8955-45ee-a5b7-3d87972325b1

6. 配置dataId

有两种配置方式,一种是官方自动构建dataId ,另一种是指定dataId。

自动配置 dataId

在Nacos Spring Cloud中,dataId的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}

  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

比如项目名称为nacos-config-client,当前环境为test,格式文件为properties,那就需要新建一个dataId为nacos-config-client.properties配置。

手动设置 dataId

在NacosConfigProperties类里面name字段就是配置dataId:

public class NacosConfigProperties {
  /**
	 * nacos config dataId name.
	 */
	private String name;
  //省略其他配置
}

7. 获取数据

通过@Value就能获取配置文件的数据:

@Component
@RefreshScope
public class TestConfig {

    @Value(value = "${user.name:null}")
    private String test;

    public String getTest(){
        return test;
    }

要实现配置的自动更新,需要添加Spring Cloud原生注解 @RefreshScope。controller直接调用即可:

@RestController
public class TestController {

    @Autowired
    private TestConfig testConfig;

    @GetMapping("/config")
    public String testConfig(){
        String config = testConfig.getTest();
        return config;
    }
}

8. 扩展配置和共享配置

开发中,有时候会出现多个模块可能会有很多共用的配置,比如数据库连接信息,Redis 连接信息,RabbitMQ 连接信息,监控配置等等。那么此时,我们就希望可以加载多个配置,多个项目共享同一个配置之类等功能,Nacos Config 也确实支持。

  • Nacos在配置路径spring.cloud.nacos.config.extension-configs下,允许我们指定⼀个或多个额外配置。

  • Nacos在配置路径spring.cloud.nacos.config.shared-configs下,允许我们指定⼀个或多个共享配置。

上述两类配置都⽀持三个属性:data-idgroup(默认为字符串DEFAULT_GROUP)、refresh(默认为true)。

spring:
  application:
    name: xxxxx-api
  profiles:
    active: dev
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml
        namespace: c38b64d5-02e3-49d8-9b4f-a139d6970ccc
        ## 公共配置
        shared-configs:
          - data-id: application.yml
            group: DEFAULT_GROUP
       # 常规配置文件
        # 优先级大于 shared-configs,在 shared-configs 之后加载
        extension-configs:
          - data-id: nacos-config-advanced.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true

          - data-id: nacos-config-base.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true
  • data-id : Data Id
  • group:自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
  • refresh: 控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的

注意:这里的Data ID后面是加.yaml后缀的,且不需要指定file-extension。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术闲聊DD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值