1. 环境:JDK8 SpringCloud 2.2.0 RELEASE Nacos1.1.4
2. 问题:nacos上的配置文件可以读取到,但是发现不能热更新
3. 尝试办法1 :在用到配置项的类上都加上注解@RefreshScope
结果 :没有成功
尝试办法2 :将@value 注解替换成@NacosValue
结果 :没有成功
尝试办法3 :将@value 注解替换成@NacosValue
结果 :没有成功
4.最终解决:发现自己配置的nacos访问配置文件是写在shared-configs 上,这个配置项的意思是公共配置,放在这个配置项里的配置文件都不会热更新,所以需要热更新的配置文件都应该放在extension-configs 这个配置项上,然后
在用到配置文件中的配置项的类上都加上注解@RefreshScope 就好了
配置如下:
spring:
application:
name: hbb
# ====================================================================
# nacos相关配置(注意不要修改)
# nacos.discovery.server-addr:服务发现地址
# nacos.discovery.ip:注册到注册中心的服务实例地址,程序启动时会自动选择本地ip,如果服务器是多
# 网卡,可能会出现配置错误,此时需要指定参数"REGISTER_IP"的值
#
# nacos.config.server-addr:配置中心服务地址
# nacos.config.file-extension:配置文件后缀
# nacos.config.shared-configs:共享配置文件名
# ====================================================================
cloud:
nacos:
discovery:
server-addr: ${NACOS_HOST:paas-register}:${NACOS_PORT:8848}
ip: ${REGISTER_IP:}
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
file-extension: yml
shared-configs:
- AAA.${spring.cloud.nacos.config.file-extension} # 微服务体系相关公共配置
- BBB.${spring.cloud.nacos.config.file-extension} # 数据源配置
extension-configs:
- data-id: CCC.yml # icube业务配置
refresh: true