该问题的产生是双向的,可能是IDEA中的yaml配置文件错误,也可能是Nacos服务端的配置文件错误,为了演示方便,我们暂时先不考虑namespace(用默认的public)和group(用默认的DEFUALT_GROUP),到时候保证这两项一一对应即可
一 、标准的nacos配置模块内容
1 bootstrap.yml
# nacos配置
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
#group: DEV_GROUP
#namespace: 7d8f0f5a-6a53-4785-9686-dd460158e5d4
#nacos端配置文件DataId的命名规则是:
#${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
#本案例的DataID是:nacos-config-client-dev.yaml
2 application.yml
spring:
profiles:
active: dev # 表示开发环境
#active: test # 表示测试环境
#active: info
3 Controller层
@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController
{
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}
4 主启动类
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377
{
public static void main(String[] args) {
SpringApplication.run(NacosConfigClientMain3377.class, args);
}
}
5、Nacos服务配置端(http://localhost:8848/nacos)内容
参考上述标准案例即可保证代码正确,但仍有以下注意点
二、注意点
1 注意先后顺序,先编辑完Nacos服务端的配置文件再启动自己的nacos配置模块,同理,出现bug时也要先关掉自己启动中的nacos配置模块,修改完后再按顺序启动
2 Nacos一定都要用yaml写法,不要写出yml
3 检查一下Nacos服务配置端,Nacos的DataID是否写对?配置内容写的是否正确(注意格式,config和info的格式搭配一定要注意)
不要忘记加空格
4 通过startup.cmd重启Nacos,有可能出现栈溢出,网络故障等Nacos系统错误
三、测试与结论
该内容是控制器中通过@Value从Nocos服务端读取过来并注入到属性configInfo中的
这是Nacos服务端的配置内容,也是注入到属性configInfo的值
验证如下