我可以使用properties / yml文件配置@FeignClient URL吗?

时间:2015-03-26 12:06:15

标签: spring-cloud netflix-feign

我的目标是创建一个不同步骤的策略,以便从两个组件之间的点对点通信到一个完整的netflix"使用尤里卡,丝带,hystrix的沟通方式。每次迭代我想添加更多,同时我尝试限制实际代码的更改量。假设是我首选的客户端框架来实现这一目标。第一步是创建一个FeignClient与服务器进行通信:

@FeignClient(url = "http://localhost:9000")
interface Client {
    @RequestMapping(method = RequestMethod.GET, value = "/author/{author}/addedValue/{addedValue}")
    Result addToTotal(@RequestParam(value="author") String author, @RequestParam(value="addedValue") long addedValue);
}

这有效,但我不希望在注释中对URL进行硬编码。我想要这个:@FeignClient() 并有一个属性构造,如:client.url:http://localhost:9000

到目前为止,我无法找到有关如何配置的任何线索,而且我无法在spring-cloud源中找到解决方案。

可以做到,如果是的话;如何?

2 个答案:

答案 0 :(得分:35)

可以使用“serviceId”而不是“url”来完成。 E.g。

@FeignClient("foo")
interface Client { ... }

foo.ribbon.listOfServers: localhost:9000

e.g。有关文档,请参阅http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-ribbon-without-eureka

答案 1 :(得分:18)

这可以这样做:

@FeignClient(name="fd-mobileapi-service",url="${fdmobile.ribbon.listOfServers}")

其中fdmobile.ribbon.listOfServers : valueapplication.properties中的属性。

我已经测试了它并且它正在运行。