springcloud alibaba 使用nacos配置中心不读取nacos中的配置
spring-cloud-alibaba 最新版本 2021.0.1.0
问题描述
项目启动无报错,但是不能读取到 Nacos 中配置的数据,而且似乎是根本没有连接到Nacos(注册中心功能可以正常注册),因为如果注释掉application.propertis
中的属性 coupon.user.name 则会直接报错,提示@Value("${coupon.user.name}") 读不到配置;
Nacos Config Starter 实现了 org.springframework.cloud.bootstrap.config.PropertySourceLocator接口,并将优先级设置成了最高。
在 Spring Cloud 应用启动阶段,会主动从 Nacos Server 端获取对应的数据,并将获取到的数据转换成 PropertySource 且注入到 Environment 的 PropertySources 属性中,所以使用 @Value 注解也能直接获取 Nacos Server 端配置的内容。
根据上面官方例子中的原理的说明 Nacos Config Starter 实现PropertySourceLocator接口,而我在其实现类中debug并没有执行,由此判断是可能没有连接Nacos。
解决
原因是 最新版本(2021.0.1.0)移除了 spring-cloud-starter-bootstrap 的支持,改用 spring.config.import
解决方法: https://github.com/alibaba/spring-cloud-alibaba/pull/2349
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<!-- 排除 bootstrap, 未来版本 spring-cloud-alibaba 应该在 spring boot >= 2.4.0 时将该依赖设置为 optional -->
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</exclusion>
</exclusions>
</dependency>
# application.yml (不能是bootstrap.yml)
spring:
cloud:
nacos:
config:
group: DEFAULT_GROUP
server-addr: localhost:8848
config:
import:
- optional:nacos:test.yml # 监听 DEFAULT_GROUP:test.yml
2021.0.1.0 Latest
⭐️ Features / Enhancements
[Nacos Config] Support spring.config.import (#2349 )
[Nacos Config] Remove dependency spring-cloud-starter-bootstrap (#2349 )
更多关于这个问题的描述见 https://segmentfault.com/q/1010000041610909
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
2018-03-26 文字分散对齐
2018-03-26 代码风格规范参考