【教程】SpringCloud+Nacos+Feign+Gateway ( 六 ) Nacos 配置中心(推荐)

 

代码参考:https://gitee.com/guanweiCode/SpringCloudGw

 

 

1. 需要参考上几篇文档 配置连接到Nacos

 

2.增加配置中心依赖

        <!-- Nacos配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

 

2.增加配置

yml配置文件

spring:
  profiles:
    # 当前激活环境
    active: @profile.name@
  cloud:
    nacos:
      config:
        # Nacos 认证用户
        username: nacos
        # Nacos 认证密码
        password: nacos
        # 命名空间 常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
        namespace: @config.namespace@
        # 配置中心地址
        server-addr: @config.server-addr@
        # 配置对应的分组
        group: @config.group@
        # 配置文件后缀
        file-extension: yaml
        prefix: @prefix.name@
        # 支持多个共享 Data Id 的配置,优先级小于extension-configs,自定义 Data Id 配置 属性是个集合,内部由 Config POJO 组成。Config 有 3 个属性,分别是 dataId, group 以及 refresh
        #shared-configs[0]:
          #data-id: ${prefix.name}-common.yaml # 配置文件名-Data Id
          #group: ${config.group}   # 默认为DEFAULT_GROUP
          #refresh: false   # 是否动态刷新,默认为false
        extension-configs:
          #日志配置
          - data-id: gwcloud-log-common.yaml # 配置文件名-Data Id
            group: common   # 默认为DEFAULT_GROUP
            refresh: true   # 是否动态刷新,默认为false
          #日志2配置
          - data-id: gwcloud-log-common2.yaml # 配置文件名-Data Id
            group: common2   # 默认为DEFAULT_GROUP
            refresh: true   # 是否动态刷新,默认为false
      discovery:
        namespace: @config.namespace@
        server-addr: @config.server-addr@
        watch:
          enabled: false

 

 

引用多个配置文件

      # shared-configs 支持多个共享 Data Id 的配置,优先级小于extension-configs,自定义 Data Id 配置 属性是个集合,内部由 Config POJO 组成。Config 有 3 个属性,分别是 dataId, group 以及 refresh
        extension-configs:
          #日志配置
          - data-id: gwcloud-log-common.yaml # 配置文件名-Data Id
            group: common   # 默认为DEFAULT_GROUP
            refresh: true   # 是否动态刷新,默认为false
          #日志2配置
          - data-id: gwcloud-log-common2.yaml # 配置文件名-Data Id
            group: common2   # 默认为DEFAULT_GROUP
            refresh: true   # 是否动态刷新,默认为false

 

配置的优先级


Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。

A: 通过 spring.cloud.nacos.config.shared-dataids 支持多个共享 Data Id 的配置

B: 通过 spring.cloud.nacos.config.extension-config[n].data-id 的方式支持多个扩展 Data Id 的配置

C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置

当三种方式共同使用时,优先级关系是:A < B < C

 

 

 

对应POM文件

 

 

3 Nacos增加空间

 

4. 实时刷新配置 注解 @RefreshScope

 

package com.gw.nacos.provide.user.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * @Title: 标题
 * @Description: 描述
 * @Version: v1.0
 * @Author: Mr.Guan
 * @Mail GuanWeiMail@163.com
 * @DateTime: 2021-02-27 16:18:24
 * @Project springcloud-gw-parent
 * @Package com.gw.nacos.provide.user.controller
 */
@RefreshScope //实时刷新配置
@RestController
@RequestMapping("nacos-config")
public class NacosConfigController {

    @Value("${nacosconfig.user.name}")
    String userName;

    @Value("${log.user.name}")
    String logUserName;

    @Value("${spring.profiles.active}")
    String active;

    @Value("${nacosconfig.user.age}")
    int age;

    /**
     * 测试配置中心
     * @return
     */
    @RequestMapping("/getUserConfig")
    public Object getUserConfig(){
        Map<String,Object> map = new HashMap<>(2);
        map.put("userName",userName);
        map.put("age",age);
        map.put("active",active);
        map.put("logUserName",logUserName);
        return map;
    }


}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐