传统的解决方案:
(1)记得加自动刷新注解:@RefreshScope
(2)springboot , springcloud, nacos 的版本要统一,比如 2.0.x 的,尽量都要 2.0.x;2.1.x 的,就都要 2.1.x
(3)nacos 配置:
cloud: nacos: server-addr: 127.0.0.1:8848 #注册中心配置 discovery: namespace: xxxx #配置中心配置 config: file-extension: yaml #这里写 yml 还是 yaml ,取决于 nacos 配置中心里面配置列表定义的 data id 后缀是什么就是什么 namespace: xxxx refresh-enabled: true auto-refresh: true enable-remote-sync-config: true #扩展配置 extension-configs: - data-id: xxxx.properties refresh: true
将刷新都加上:
refresh-enabled: true auto-refresh: true enable-remote-sync-config: true
(4)最后一种方法,也是自己经过网上各种解决方法都解决不了,足足卡了两天后终于解决了的方法:
就是如果你的项目里面做了数据库密码加密,一般会引入一个 maven 依赖:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
这个用于加解密的,哪怕你自己的 nacos 没有使用加解密,但是只要你的数据库密码有用了,这个东西也会影响,导致 nacos 无法自动刷新,从而在控制台报一个错:
[notify-error] dataId=xxx …… placeholder 'project.version' in value "${project.version}
就是这个导致 nacos 的配置无法刷新到本地,所以解决方法,还是把这个版本号,改成和你的大部队版本一直,比如你用的整体版本是 2.0.x 的,这个就降级为 2.0.x ,如果是高的,就是升高,就可以了。
===========================
额外知识:
nacos 默认是集群方式启动的,首次操作一般我们都是单机启动,启动命令不能直接到 bin 目录执行:./startup.sh,而是需要这样写:
(1)./startup.sh -m standalone
(2)不想每次启动命令都这么写,可以直接 vi 打开 startup.sh 文件,找到 : export MODE="cluster" ,将这行注释,然后在其下面添加 export MODE="standalone" 保存即可,启动命令:nohup sh startup.sh &