Nacos笔记(二):基本使用
目录
前言
本文只讲解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
当然,如何命名并不是固定的,具体需要以项目实际定调为主。
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,访问接口获取配置的值。
四、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;
}
}
本文地址:https://blog.csdn.net/qq_19391957/article/details/112251812
下一篇: java源码分析-native方法的调用
推荐阅读
-
ES6基础学习——第二天(Symbol 的基本使用、迭代器、生成器、Promise 基本语法)
-
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
-
Docker的基本使用笔记
-
Linux学习笔记(二):文件目录管理和VIM编辑器的使用
-
MySQL相关知识复习整理 -- <<MySQL必知必会>>阅读笔记二 (基础内容进阶-较高频率使用)
-
Python学习笔记——主要函数及基本使用(与C的对比)
-
Solr学习笔记---部署Solr到Tomcat上,可视化界面的介绍和使用,Solr的基本内容介绍,SolrJ的使用
-
【MongoDB详细使用教程】二、MongoDB基本操作
-
CodeIgniter Doctrine2基本使用(二)(转)
-
Linux计划任务Crontab学习笔记(1):应用场景和基本使用