我有这样的,
@FeignClient(name = "${airport.service.name}")
而且我有编译错误,例如,
java.lang.IllegalStateException:服务 id 不是合法的主机名 (${airport.service.name})
问题是如何将主机名表单传递applciation.yaml
给 FeignClient?
虽然已经很晚了,但我正在更新我的答案,因为我在 Spring Cloud 中使用 feign 客户端时遇到了这个异常(java.lang.IllegalStateException:服务 id 不是合法的主机名)根本原因是 feign 客户端不会接受低于分数的服务名称, 请通过以下链接。为了解决这个问题,我用 hypen(school-service) 而不是 understore(school_service) 重命名了 feign 客户端使用的服务名称
Github 链接 - spring-cloud-netflix - 问题 Github 链接 - spring-cloud-netflix - 提交
使用feign.client.config.airport-service.name
, 并在属性或 yml 中配置。见https://github.com/spring-cloud/spring-cloud-openfeign/blob/master/docs/src/main/asciidoc/spring-cloud-openfeign.adoc
您可以指定 url 参数,而不是 name 参数:
@FeignClient(name = "${airport.service.name}", url = "${airport.service.url}")
如果你需要使路径可配置,你可以使用类似的东西
@RequestMapping(
path = "${airport.service.path}"
)