Можно ли настроить url-адрес @FeignClient с помощью файла свойств / yml?

моя цель состоит в том, чтобы создать стратегию различных шагов, чтобы получить от точки к точке связи между 2-мя компонентами до "полномасштабного netflix" стиль общения с помощью eureka, ribbon, hystrix. С каждой итерацией я хочу добавить больше, пока я пытаюсь ограничить количество изменений в фактическом коде. Feign - моя предпочтительная структура на стороне клиента, чтобы это произошло. Первый шаг-создать Фейнклиент для связи с сервером:

@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 ответов


Это можно сделать с помощью "serviceId" вместо "url". Е. Г.

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

и

foo.ribbon.listOfServers: localhost:9000

например см. http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-ribbon-without-eureka для документов.


Это можно сделать так:

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

здесь fdmobile.ribbon.listOfServers : value находится в application.properties.

я испытывал его и он работает.