spring cloud - starter - ¿Puedo configurar una URL de @FeignClient usando un archivo de propiedades/yml?
spring-cloud-starter-feign (2)
Esto se puede hacer así:
@FeignClient(name="fd-mobileapi-service",url="${fdmobile.ribbon.listOfServers}")
Donde fdmobile.ribbon.listOfServers : value
es una propiedad en application.properties
.
Lo he probado y está funcionando.
Mi objetivo es crear una estrategia de diferentes pasos para pasar de una comunicación punto a punto entre 2 componentes a un estilo de comunicación de "netflix completo" con eureka, ribbon, hystrix. Con cada iteración quiero agregar más mientras trato de limitar la cantidad de cambios al código real. Feign es mi marco de lado del cliente preferido para que esto suceda. El primer paso es crear un FeignClient para comunicarse con el servidor:
@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);
}
Esto funciona, pero no quiero que la URL esté codificada en la anotación. Me gustaría tener esto: @FeignClient () y tener una construcción de propiedades como: client.url: http: // localhost: 9000
Hasta ahora no pude encontrar pistas sobre cómo configurar eso y no pude encontrar una solución en las fuentes de la nube primaveral.
Se puede hacer y si es así; ¿cómo?
Se puede hacer con un "serviceId" en lugar de un "url". P.ej
@FeignClient("foo")
interface Client { ... }
y
foo.ribbon.listOfServers: localhost:9000
por ejemplo, consulte http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-ribbon-without-eureka para los documentos.