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



我的目标是创建一个不同步骤的策略,从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 : valueapplication.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

最新更新