我的目标是创建一个不同步骤的策略,从2个组件之间的点对点通信到使用eureka、ribbon、hystrix的"全面netflix"风格的通信。在每次迭代中,我都希望添加更多内容,同时尽量限制对实际代码的更改量。Feign是实现这一目标的首选客户端框架。第一步是创建一个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
到目前为止,我找不到任何关于如何配置的线索,也找不到春季云资源的解决方案。
可以做到吗?如果可以;怎样
它可以用"serviceId"而不是"url"来完成。例如
@FeignClient("foo")
interface Client { ... }
和
foo.ribbon.listOfServers: localhost:9000
例如参见http://projects.spring.io/spring-cloud/spring-cloud.html#spring-云丝带没有尤里卡的文档。
这可以这样做:
@FeignClient(name="fd-mobileapi-service",url="${fdmobile.ribbon.listOfServers}")
其中fdmobile.ribbon.listOfServers : value
是application.properties
中的一个属性。
我已经测试过了,它正在发挥作用。
我有一种方法可以通过一个非常简单的接口FeignClient,传递环境变量
@FeignClient(url = "https://"+"${url}")
interface Client {
@RequestMapping(method = RequestMethod.GET, value = "/author/{author}/addedValue/{addedValue}")
Result addToTotal(@RequestParam(value="author") String author, @RequestParam(value="addedValue") long addedValue);
属性
#URL
url.client=${URL}
.env
URL=https:localhost:9000