You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot SimpleDiscoveryClient YAML配置无法识别服务问题

根因

SimpleDiscoveryClient 依赖Spring Boot的宽松配置绑定规则加载实例,properties和YAML两种格式的绑定逻辑存在差异:

  • 扁平化的properties配置中,只要给实例配置了uri参数,绑定器会自动从URI中解析host、port、协议信息,同时生成默认的实例ID,因此配置spring.cloud.discovery.client.simple.instances.serviceA[0].uri=http://localhost:8081可以正常生效。
  • 层级结构的YAML配置解析时,会先将每个列表项映射为DefaultServiceInstance对象,如果你只配置uri单个字段,绑定器会将该节点判定为无效的不完整实例,直接过滤丢弃,最终客户端读不到任何serviceA的实例。
解决方案

不需要同时维护两份配置文件,把YAML中的实例配置补全为符合绑定规则的完整实例字段即可,正确配置示例:

spring:
  cloud:
    discovery:
      client:
        simple:
          instances:
            serviceA:
              - instanceId: serviceA-instance-1
                host: localhost
                port: 8081
                uri: http://localhost:8081

字段说明:

  • instanceId为服务下的实例唯一标识,自定义保证同服务下不重复即可
  • host、port和uri中的服务地址、端口保持一致即可
    配置完成后重启服务,SimpleDiscoveryClient即可正常识别serviceA实例,Feign调用逻辑和properties配置时完全一致。

内容的提问来源于stack exchange,提问作者Flavio Oliva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:54:30