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

时间:2018-03-02 11:35:11

标签: spring spring-boot spring-cloud netflix-feign spring-cloud-feign

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

获取资源

在这两个项目中,我在server.servlet.context-path=/demo/api/

中设置了application.properties

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);
}

我希望application.properties项目的demo-feignclient

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

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

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

feign.name=demo-cartservice/demo/api

application.properties demo-feignclient这个有效:

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