Nacos笔记(二):基本使用

目录

前言

一、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_data_model

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

#ip:port ,注意端口要加上,即使是80端口

nacos.config.server-addr=127.0.0.1:8848

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,访问接口获取配置的值。

四、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

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;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值