欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Nacos笔记(二):基本使用

程序员文章站 2022-03-30 11:18:30
本文只讲解Nacos配置管理方面的使用。一、Nacos的关键概念:”磨刀不误砍柴工“,先把nacos基本的概念搞清楚。namespacegroupdataId数据类型支持的格式:text/json/yaml/properties等test: info = testjson: { "info":"test"}yaml: info: testproperties: info=test一,springboot的基本使用1,jar包引用2,参数配置3,注....

目录

前言

一、Nacos的关键概念

二,JavaApi的基本调用

1,jar包引用

2,代码实现

三,springboot的基本使用

1,jar包引用

2,参数配置

3,注解引用

4,测试

四、SpringCoud的基本使用

1,jar包引用

2,参数配置

3,注解引用


前言

    本文只讲解Nacos配置管理方面的使用,服务的注册与发现,请自行了解。 参考:官方文档

运行环境:(注意版本号)

    JDK1.8 ;spring-boot  2.2.2.RELEASE ;

    nacos-config-spring-boot-starter  0.2.4 ;

    spring-cloud-starter-alibaba-nacos-config  2.2.2.RELEASE

一、Nacos的关键概念

”磨刀不误砍柴工“,先把nacos基本的概念搞清楚。

1,Nacos 数据模型 :Key 由三元组唯一确定, Namespace默认是空串,公共命名空间(public),Group分组默认是 DEFAULT_GROUP。

    namespace:命名空间,一般来区分不同的环境,如pro、test、dev;

    group: 分组,一般为项目层面的命名,如order-service

    dataId:唯一,一般是服务模块名或配置文件的标志,如 commons-mq-config-test.yaml

    当然,如何命名并不是固定的,具体需要以项目实际定调为主。

Nacos笔记(二):基本使用

2,数据类型支持的格式:text/json/yaml/properties等。

    test: info = test

    json: { "info":"test"}

    yaml: info: test  (注意:yaml格式冒号后有个空格)

    properties: info=test

二,JavaApi的基本调用

1,jar包引用

<dependency>
      <groupId>com.alibaba.boot</groupId>
      <artifactId>nacos-config-spring-boot-starter</artifactId>
      <version>0.2.4</version>
</dependency>

2,代码实现

/**
 * @author HERO
 * @date 2021/3/1
 * @project_name springboot-demo
 */
public class NacosDemo {

    public static void main(String[] args) {
        try {
            String serverAddr = "172.16.2.182:8848";
            String dataId = "example";
            String group = "DEFAULT_GROUP";
            Properties properties = new Properties();
            properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);

            ConfigService configService = NacosFactory.createConfigService(properties);
            String content = configService.getConfig(dataId, group, 5000);
            System.out.println(content);

            configService.addListener(dataId, group, new Listener() {
                @Override
                public void receiveConfigInfo(String configInfo) {
                    System.out.println("recieve:" + configInfo);
                }

                @Override
                public Executor getExecutor() {
                    return null;
                }
            });

            boolean isPublishOk = configService.publishConfig(dataId, group, "content");
            System.out.println(isPublishOk);

            Thread.sleep(3000);
            content = configService.getConfig(dataId, group, 5000);
            System.out.println(content);

            boolean isRemoveOk = configService.removeConfig(dataId, group);
            System.out.println(isRemoveOk);
            Thread.sleep(3000);

            content = configService.getConfig(dataId, group, 5000);
            System.out.println(content);
            Thread.sleep(300000);

        } catch (NacosException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

三,springboot的基本使用

1,jar包引用

<dependency>
      <groupId>com.alibaba.boot</groupId>
      <artifactId>nacos-config-spring-boot-starter</artifactId>
      <version>0.2.4</version>
</dependency>

2,参数配置

application.properties

3,注解引用

/**
 * 粒度最小可以控制在controller级别,autoRefreshed=true开启自动更新
 * @NacosPropertySource 用于加载dataId为example的配置源,group默认为DEFAULT_GROUP,NameSpace默认为public
 */
@NacosPropertySource(dataId = "example",autoRefreshed = true)
@RestController
public class HelloController {
    /**
     * @NacosValue可以获取yaml/properties/test格式,不能直接获取json格式
     * info: 表示key
     * local info:代表默认值,如果key不在,则使用默认值。为高可用策略
     * autoRefreshed:开启自动更新
     */
    @NacosValue(value = "${info:local info}",autoRefreshed = true)
    private String info;

    @GetMapping("/hello")
    public String hello(){
        System.out.println(info+LocalDateTime.now());
        return info;
    }
}

4,测试

1,通过Nacos控制台,增加配置。

2,访问接口获取配置的值。

Nacos笔记(二):基本使用

Nacos笔记(二):基本使用

四、SpringCoud的基本使用

1,jar包引用

<dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
      <version>2.2.2.RELEASE</version>
</dependency>

2,参数配置

创建bootstrap.properties文件,并在bootstrap.properties中添加Nacos配置,这里的dataId粒度为项目。

ps: Spring Boot中有两种上下文配置,bootstrap和application。bootstrap是应用程序的父上下文,加载优先于application。由于在加载远程配置之前,需要读取Nacos配置中心的服务地址,所有Nacos服务地址等属性配置需要放在bootstrap.properties文件中。

#必须在boottrap.properties声明
spring.profiles.active=test

#域名/ip:port,即使80端口,也要加上
spring.cloud.nacos.server-addr=172.16.2.182:8848

#namespace非必要配置,默认为public。配置时,值为namespace对应的MD5
spring.cloud.nacos.config.namespace=a712a034-40bd-420a-a88a-26cf784cdc94

#group非必要配置,默认为DEFAULT_GROUP
spring.cloud.nacos.config.group=DEFAULT_GROUP

#Nacos Spring Cloud中 dataId = ${prefix}-${spring.profiles.active}.${file-extension}
#prefix 默认为spring.application.name,可以通过spring.cloud.nacos.config.prefix优先指定。
#active 可以为空,dataId = ${prefix}.${file-extension}
#file-extension 内容格式,只支持properites和yaml
#此次配置:dataId = nacos-demo-test.yaml
spring.application.name=springboot-demo
spring.cloud.nacos.config.prefix=nacos-demo
spring.cloud.nacos.config.file-extension=yaml

# 若存在同一个Key,上面的优先级大于ext-config; extension-configs[X] X的值越大,优先级越高。
# 扩展配置,用于实现支持多个配置
spring.cloud.nacos.config.extension-configs[0].data-id=nacos-demo-test0.yaml
spring.cloud.nacos.config.extension-configs[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.extension-configs[0].refresh=true

Nacos笔记(二):基本使用

3,注解引用


@RestController
//@RefreshScope 实现配置自动更新
@RefreshScope
public class HelloController {
    /**
     * 注意:此处使用Spring的@Value注解,不是@NacosValue
     */
    @Value("${info:local info}")
    private String info;

    @GetMapping("/hello")
    public String hello(){
        System.out.println(info+LocalDateTime.now());
        return info;
    }
}

 

本文地址:https://blog.csdn.net/qq_19391957/article/details/112251812

相关标签: Nacos spring boot