Nacos 2.2.x版本配置详解(鉴权版本)

server/2024/10/17 20:53:44/

Nacos 2.2.x

  • 一、安装和鉴权
  • 二、项目中配置集成
        • 1.位置问题
        • 2.namespace命名空间
        • 3.username和password
        • 4.group
        • 5.file-extension
        • 6.prefix
        • 7.shared-configs
  • 三、实战
      • 1.新建一个命名空间,取名wq-config(这个你随意),会随机生成一个命名空间ID
      • 2.新建下面几个测试的配置
      • 3.我们用代码验证一下新增的几个配置

你说这人到了二十七八,怎么就那么爱忘事,前面写了nacos的安装:Docker安装nacos并开启鉴权,本来打算接着写一篇nacos具体使用配置的,但是不知道怎么就忘了,然后今天突然想到了nacos一个问题,还得去百度查,所以还是整篇文章记录下,查百度不如查自己。

一、安装和鉴权

安装就不多谈了,大家移步我前面一篇文章:Docker安装nacos并开启鉴权

没有用docker,直接去官网:https://nacos.io/download/nacos-server/下载二进制安装包,开箱即用,也非常方便。

二、项目中配置集成

由于我用的是SpringCloud Alibaba的集成,所以配置前缀就是下面这样:

spring:cloud:nacos:discovery:server-addr: 172.16.72.133:8848namespace: e8942369-0b37-44a0-b711-3927db1796adusername: nacospassword: nacosconfig:server-addr: 172.16.72.133:8848namespace: 76dae550-4133-44d8-b591-dc82f5f97b6eusername: nacospassword: nacosgroup: MY_GROUPfile-extension: yamlprefix: applicationshared-configs:- data-id: test-shared.yamlgroup: MY_GROUP- data-id: test-shared-another-group.yamlgroup: ANOTHER_GROUP

这里的spring.cloud.nacos.discovery配置主要用作服务的注册与发现的,是配套使用的,所以先写在这里
我们重点看下面的spring.cloud.nacos.config,我会挑一些常用的,根据配置顺序依次讲解。

1.位置问题

spring.cloud.nacos.config这个配置,必须要写在bootstrap.properties或者bootstrap.yml中,这个是必须的,不能改,bootstrap和application的区别,bootstrap是系统级别的配置,application是模块级别的配置,而且加载优先级yml高于properties,同名称的配置文件,properties会覆盖yml,但是配置优先级:properties的优先级大于yml

2.namespace命名空间

创建方式
在这里插入图片描述
这是nacos的第一层配置隔离(group是第二层),一般情况下,不同命名空间下面的配置不能互通。

3.username和password

nacos 2.2.x版本开启鉴权后,每个配置nacos的地方,都得加上用户名和密码,不然就报错

4.group

这是nacos的第二层配置隔离,同一个namespace下面,如果group不同,那么一般情况下,配置不互通

5.file-extension

这是新建配置的data-id的文件后缀

6.prefix

这是新建配置的data-id的文件前缀

7.shared-configs

前面我们讲到了配置隔离namespace和group,说的都是一般情况下,配置不互通,那么如果真有特殊需求怎么办,这就用到了shared-configs字段,代表共享配置,可以互通,格式就按照下面的来,有多个就平铺,group必须指定,不管是不是相同的group,不然配置都会找不到。

 shared-configs:- data-id: test-shared.yamlgroup: MY_GROUP- data-id: test-shared-another-group.yamlgroup: ANOTHER_GROUP

三、实战

1.新建一个命名空间,取名wq-config(这个你随意),会随机生成一个命名空间ID

在这里插入图片描述

2.新建下面几个测试的配置

在这里插入图片描述

  • data-id为:application-dev.yaml
    在这里插入图片描述

  • data-id为:application-common.yaml
    在这里插入图片描述

  • data-id为:test-shared.yaml
    在这里插入图片描述

  • data-id为:test-shared-another-group.yaml
    在这里插入图片描述

我在这里详细解释一下创建者几个配置,是为了验证什么:

我们先回顾下前面的两个配置prefix前缀 和 file-extension后缀
1.首先说一下nacos,它会默认加载prefix.file-extension的为data-id的配置文件
2.其次,配合spring的配置spring.profiles.active,我们在application.properties文件中加入下面这个

spring.profiles.active=dev,common
  • 我们都知道spring.profiles.active是为了切换开发环境和生产环境,除了切换外,在nacos这里它还有一个作用,就是指定加载某个配置文件
  • 比如我们的dev和common,我们在spring.profiles.active中配置了,就会去nacos加载prefix-[配置的名字].file-extension的文件,比如我们这里配置了dev,就会去加载application.dev.yaml的文件,至于dev你可以换个其他任意的名字。
  • 如果我们nacos新增了application.dev.yaml的配置,但是在spring.profiles.active中不指定,就会加载报错加载不出来

3.我们用代码验证一下新增的几个配置

  • 新建一个配置类,用spring的value注入,我们可以看到,@Value注解里面的内容,都是我们在nacos控制台上新增的配置中,yaml里面的内容。@RefreshScope注解是可以动态刷新配置,当nacos网页中的配置发生修改,代码中也能修改。

    import lombok.Data;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.context.annotation.Configuration;@Configuration
    @Data
    @RefreshScope
    public class TestConfiguration {@Value("${wq.name}")private String name;@Value("${wq.age}")private int age;@Value("${city.cityName}")private String cityName;@Value("${mail.address}")private String address;@Value("${wangqing.name}")private String wqName;
    }

    这里思考一下,为什么我们在nacos控制台新增的配置,在代码中可以用@Value获取到?

    其实是因为nacos本质会将网页中的配置本地化到项目中,这样就能通过代码获取,跟你在项目中的application.properties等文件配置一样。

  • 写个接口去请求

    @RestController
    @RequestMapping("/test")
    public class TestController {private static final Logger logger = LoggerFactory.getLogger(TestController.class);@ResourceUserInfoService userInfoService;@AutowiredTestConfiguration testConfiguration;@RequestMapping("/testOne")public void test() {System.out.println(testConfiguration.getName());System.out.println(testConfiguration.getCityName());System.out.println(testConfiguration.getAddress());System.out.println(testConfiguration.getWqName());}
    }
  • 启动看看效果
    其实这里,只要我们项目能成功启动,说明配置就是对的,不然就会报下面这个错误:
    在这里插入图片描述
    我们浏览器请求一下,看看控制台打印:
    在这里插入图片描述
    可以看到,是能正确打印的
    而且@Value(“ c i t y . c i t y N a m e " ) 和 @ V a l u e ( " {city.cityName}")和@Value(" city.cityName")@Value("{mail.address}”)能够成功打印,也验证了前面说到的shared-configs的配置。


http://www.ppmy.cn/server/132008.html

相关文章

Oracle 零宽空格问题处理

在Oracle中,去除字符串两端的零宽空格(Zero Width Space,Unicode编码为U200B)可以使用TRIM函数结合REGEXP_REPLACE函数来实现。由于标准的TRIM函数只能去除ASCII字符,对于Unicode字符如零宽空格,需要使用正…

论文阅读笔记-Self-Attention

前言 Self-Attention能够将每个元素和当前时刻元素进行比较来确定上下文元素的重要性,这也使得它在NLP模型中表现优异。而本篇文章则是将卷积结构与Self-Attention结构进行了比较,通过 实验证明了这样的卷积结构同样有着高效的计算和足以和Self-Attention媲美的效果。本篇文…

springboot 整合 快手 移动应用 授权 发布视频 小黄车

前言: 因快手文档混乱,官方社区技术交流仍有很多未解之谜,下面3种文档的定义先区分。 代码中的JSON相关工具均用hutool工具包 1.快手 移动双端 原生SDK 文档https://mp.kuaishou.com/platformDocs/develop/mobile-app/ios.html 2.快手 Api 开…

进入容器:掌控Docker的世界

进入容器:掌控Docker的世界 在这个快速发展的技术时代,你是否曾被Docker的庞大生态所吸引?那么,有没有想过在这个容器化的世界里,如何快速高效地“进入”这些隐藏在虚拟墙后的容器呢?容器就如同魔法箱,装载着应用与服务,而你,通过探索这些容器,能够更好地管理、排除…

应用商店上新:MainConcept Transcoder和Live Streaming Software App

在Akamai云计算平台上运行工作负载的你也许还不知道,为了帮助用户更容易地找到并快速部署各类解决方案,Akamai提供了一个丰富的应用商店(Marketplace),其中包含各类经过验证,可以在Akamai云计算平台上轻松部…

【JavaScript】关于使用JS对word文档实现预览的一些思考

文章目录 mammothdocx4js mammoth 官网地址&#xff1a;https://github.com/mwilliamson/mammoth.js#readme 安装mammoth&#xff1a; npm i mammoth -S我们可以安装mammoth来实现上传的word文件的在线预览&#xff0c;我们以element的上传组件为示例&#xff1a; <temp…

redis 创建只读用户

redis 版本小于 6&#xff0c;不能使用下边发方法创建 1. 临时添加 redis重启后&#xff0c;这个用户就不存在了 先连接redis,在 redis 里边指定添加用户命令 redis-cli ACL SETUSER readonly_user on nopass ~* read -write -admin 【创建的用户没密码】 ACL SETUSER r…

四、创建型(原型模式)

原型模式 概念 原型模式是一种创建型设计模式&#xff0c;通过复制现有对象来创建新对象&#xff0c;而不是通过构造函数。该模式使用原型实例指定创建对象的种类&#xff0c;并通过复制这些原型实例来生成新对象。 应用场景 对象创建成本高&#xff1a;当创建对象的成本较高…