spring cloud - 从应用程序属性中获取假客户端的服务器名称

spring cloud - get server name for feign client from application properties

我有两个微服务 demo-cartservicedemo-feignclient,其中 demo-feignclientdemo-cartservice

获取资源

在这两个项目中,我都在 application.properties

中设置了 server.servlet.context-path=/demo/api/

Feign 客户端代理使用 demo-cartservice

的硬编码服务器名称
@FeignClient("demo-cartservice/demo/api")
@RibbonClient("demo-cartservice/demo/api")
public interface DemoCartServiceProxy 
{
    @GetMapping("/carts/{cartId}")
    public Cart getCart(@PathVariable("cartId") long id);
}

这很好用。

有没有办法从 application.properties 读取服务器别名,像这样:

@FeignClient("${cartservice-alias}/${servlet-context}")
@RibbonClient("${cartservice-alias}/${servlet-context}")
public interface DemoCartServiceProxy 
{
    @GetMapping("/carts/{cartId}")
    public Cart getCart(@PathVariable("cartId") long id);
}

demo-feignclient 项目的 application.properties 中,我想要

server.servlet.context-path=/demo/api/
cartservice-alias=demo-cartservice

感谢您的帮助

抱歉应该先检查 docs。设置后

feign.name=demo-cartservice/demo/api

demo-feignclientapplication.properties 中有效:

@FeignClient(name="${feign.name}")
@RibbonClient(name="${feign.name}")
public interface DemoCartServiceProxy 
{
    @GetMapping("/carts/{cartId}")
    public Cart getCart(@PathVariable("cartId") long id);
}