参考于:https://nacos.io/zh-cn/docs/quick-start-spring-boot.html
<!-- SpringBoot 整合Nacos-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.10</version>
</dependency>import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.exception.NacosException;
import java.util.Properties;
public static void main(String[] args) throws NacosException {
// DataID
String dataId = "Mytest01";
// Group
String group = "com.xunliao";
// Nacos 地址
String addr = "127.0.0.1:8848";
// 构造获取配置对象方法需要的参数
Properties properties = new Properties();
properties.setProperty("serverAddr",addr);
// 获取配置对象
ConfigService configService = NacosFactory.createConfigService(properties);
// 拿出配置文件数据 第三个参数是超时时间
String config = configService.getConfig(dataId, group, 5000);
System.out.println(config);
}Namespace :命名空间
Group :配置组。 一般就是父模块名即可。
Data ID :配置集。就是 spring.application.name
可以上述三个元素决定一个配置集
一个配置文件就是一个配置集,建议设定为模块名! 配置中对应:spring.application.name
配置集的每一个配置内容就是配置项
配置集分组,通常用来定义为 父项目的名称
用于不同环境之间的隔离。通常用来分为 开发环境、测试环境、生产环境!
public static void main(String[] args) throws NacosException {
// DataID
String dataId = "Mytest01";
// Group
String group = "com.xunliao";
// Nacos 地址
String addr = "127.0.0.1:8848";
// Namespace
String namespaseid = "e60c3bd8-1350-419a-b572-fe687e77dfd0";
// 构造获取配置对象方法需要的参数
Properties properties = new Properties();
properties.setProperty("serverAddr",addr);
properties.setProperty("namespace",namespaseid);
// 获取配置对象
ConfigService configService = NacosFactory.createConfigService(properties);
// 拿出配置文件数据 第三个参数是超时时间
String config = configService.getConfig(dataId, group, 5000);
System.out.println(config);
}结论:对比Demo1、Demo2 就可以得出 不指定命名空间,默认是 public 默认空间
导出(选中一个Data组)
导入(向任何的命名空间导入之前导出的文件)
克隆(等价于导出、导入的操作)
历史版本(误操作,可以快速恢复,我个人建议尽量不要操作回滚,以免误操作)、
监听查询(可以查看当前的服务端)
public static void main(String[] args) throws NacosException {
// DataID
String dataId = "Mytest01";
// Group
String group = "com.xunliao";
// Nacos 地址
String addr = "127.0.0.1:8848";
// Namespace
String namespaseid = "e60c3bd8-1350-419a-b572-fe687e77dfd0";
// 构造获取配置对象方法需要的参数
Properties properties = new Properties();
properties.setProperty("serverAddr",addr);
properties.setProperty("namespace",namespaseid);
// 获取配置对象
ConfigService configService = NacosFactory.createConfigService(properties);
// 拿出配置文件数据 第三个参数是超时时间
String config = configService.getConfig(dataId, group, 5000);
// 输出当前获取到的配置文件
System.out.println(config);
configService.addListener(dataId, group, new Listener() {
@Override
public Executor getExecutor() {
return null;
}
// 当配置有变化的实话,执行此方法
@Override
public void receiveConfigInfo(String s) {
System.out.println("配置文件已变更!变更后的结果是:");
System.out.println(s);
}
});
// 不让Main方法 主线程停止,进而保证Listener线程 终止导致Listener无法监控数据变化
while (true){
try {
Thread.sleep(8000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}Nacos 密码我们之前保存到数据库中,我们进入数据库,更替密码即可。算法是 BCrypt 目前没有在线生成的方式,所以我们有2种方式实现修改Nacos密码。
1、去Nacos控制台网页修改密码 推荐,修改完本账号会里面T下去自己。
2、去使用算法 生成密码,然后更新nacos_config库中users密码,不过不能直接踢下去老帐号。
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.5.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
@Test
public void getBCryiptPassword(){
String password = new BCryptPasswordEncoder().encode("新密码");
System.out.println(password);
}创建自己的用户,建议去Nacos控制台网页创建用户。
暂时没实现,当前版本较为复杂,好像新版本受到了限制! <!-- 让bootstrap优先加载于applicaiton-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.0.3</version>
</dependency>
<!-- Spring Cloud依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--Nacos配置中心依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.1</version>
</dependency># 一共指定了Nacos的命名空间、Data Id、组
server.port=18888
# Nacos的配置 application.name就是Data Id
spring.application.name=parents-config
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 不加此项就会找默认 public的命名空间,如果需要指定其他命名空间,请填写命名空间的ID
spring.cloud.nacos.config.namespace=9449b8dc-6aed-4fc8-b551-1e0d812caba4
# 不加此项就会找默认 DEFAULT_GROUP的组,如果需要指定其他组,请填写组的名字
spring.cloud.nacos.config.group=xunliao/**
* @author : zanglikun
* @date : 2021/9/7 15:06
* @Version: 1.0
* @Desc : 访问自己的接口,看看是否能够获取到新配置文件的内容。
*/
@Controller
@RequestMapping("/nacos")
//实现配置、实例热加载。
@RefreshScope
public class ConfigController {
//如果直接使用@Value的话,如果启动的时候配置文件没有键就会找不到导致项目无法启动!如果启动时有,后续删除,也会报错的,但项目不会被终止!
@Value(value = "${diy.name}")
private String name;
@Value(value = "${diy.age}")
private Integer age;
@GetMapping(value = "/get")
@ResponseBody
public String getInfo() {
return name + " : " + age;
}
}项目写完了,我们去我们的Nacos去写一下配置文件的内容
diy.name=张三
diy.age=18写完之后,我们就可以正常的访问我们的接口,看看是否能够获取真实的文件内容。
# Nacos服务注册配置 需要去启动类加上 @EnableDiscoveryClient注解即可!
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.namespace=9449b8dc-6aed-4fc8-b551-1e0d812caba4
spring.cloud.nacos.discovery.group=xunliao启动项目 去 服务管理 – 服务列表 – 你自己的命名空间 就可看到注册中心已经显示刚才启动并注册的服务了。

服务已经注册成功了!
特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!