Можно ли настроить 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
.
я испытывал его и он работает.