Can I configure a @FeignClient url using a properties/yml file?

断了今生、忘了曾经 提交于 2019-11-27 12:06:10

问题


My goal is to create a strategy of different steps to get from a point-to-point communication between 2 components to a "full blown netflix" style of communication using eureka, ribbon, hystrix. With each iteration I want to add more while I try to limit the amount of changes to the actual code. Feign is my preferred client side framework to make this happen. First step is to create a FeignClient to communicate to the server:

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

This works but I don't want the URL to be hardcoded in the annotation. I would like to have this: @FeignClient() and have a properties construct like: client.url: http://localhost:9000

So far I couldn't find any clues on how to configure that and I couldn't find a solution in the spring-cloud sources.

Can it be done and if yes; how?


回答1:


It can be done with a "serviceId" instead of a "url". E.g.

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

and

foo.ribbon.listOfServers: localhost:9000

e.g. see http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-ribbon-without-eureka for docs.




回答2:


This can be done like this:

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

Where fdmobile.ribbon.listOfServers : value is a property in application.properties.

I have tested it and it is working.



来源:https://stackoverflow.com/questions/29278005/can-i-configure-a-feignclient-url-using-a-properties-yml-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!