springboot项目,nacos配置是yaml格式,代码写法导致读取不到数据怎么回事?
这样写,代码可以读到,我用的是@NacosValue(value="${port}",autoRefresh=true)的方式,可我如果这样写,就读不到了
这样写后,我的取值方式改为@NacosValue(value="${service.port}",autoRefresh=true),还是读不到,为啥
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Spring Boot项目中,您使用Nacos作为配置中心,并且配置文件为YAML格式。通过@NacosValue
注解读取配置时,发现以下两种情况均无法正确读取配置值:
@NacosValue(value="${port}", autoRefresh=true)
可以读取到数据。@NacosValue(value="${service.port}", autoRefresh=true)
后,无法读取到数据。根据知识库中的参考资料,Nacos SDK本身不支持直接解析YAML格式的配置文件,仅支持Properties格式。因此,当您使用YAML格式的配置文件时,可能会导致配置无法被正确解析或读取。
service.port
这样的嵌套结构。port=8080
service.port=9090
service.port
是一个嵌套结构,而Nacos SDK可能将其解析为扁平化的键值对(如service_port
)。这会导致@NacosValue(value="${service.port}")
无法匹配到正确的键。service_port
,则需要将注解修改为:
@NacosValue(value="${service_port}", autoRefresh=true)
spring-cloud-starter-alibaba-nacos-config
,需要确保其版本与Spring Boot版本兼容。spring-cloud-starter-alibaba-nacos-config
版本与Spring Boot版本匹配。例如:
spring-cloud-starter-alibaba-nacos-config
2.2.x 版本。spring-cloud-starter-alibaba-nacos-config
2021.x 版本。spring-cloud-starter-alibaba-nacos-config
版本调整为2.2.6.RELEASE。Data ID
和Group
必须与应用的配置一致。如果Data ID
或Group
设置错误,可能导致配置无法被正确加载。application.yml
或bootstrap.yml
中是否正确配置了Data ID
和Group
。例如:
spring:
cloud:
nacos:
config:
server-addr: ${NACOS_SERVER_ADDR}
namespace: ${NAMESPACE}
group: DEFAULT_GROUP
file-extension: yaml
Data ID
与应用名称一致(默认为developer-service-aliyun-com
),并且Group
为DEFAULT_GROUP
或自定义的组名。@NacosValue
注解值一致。spring-cloud-starter-alibaba-nacos-config
和Nacos Client版本与Spring Boot版本兼容。Data ID
和Group
配置是否正确,避免因配置错误导致无法读取。通过以上步骤,您可以有效解决Spring Boot项目中Nacos配置无法读取的问题。