¿Puede un cliente Spring Cloud Feign compartir interfaz con un controlador web Spring?
Creación de un punto final y un cliente con Spring MVC y Feign Client (con Spring Cloud). Pensé que, dado que ambos extremos deben tener las mismas anotaciones, y que deben estar más o menos sincronizados. Tal vez podría definirlos en una interfaz y hacer que los dos extremos implementen eso.
Al probarlo, me sorprendió un poco que realmente funcione para Spring Web.
Pero no puedo encontrar una manera de hacer lo mismo para un cliente de Feign.
Básicamente tengo la interfaz:
@RequestMapping("/somebaseurl")
public interface ServiceInterface {
@RequestMapping(value = "/resource/{identifier}", method = RequestMethod.POST)
public SomeResource getResourceByIdentifier(String identifier);
}
Y luego el RestController
@RestController
public class ServiceController implements ServiceInterface {
public SomeResource getResourceByIdentifier(@PathVariable("identifier") String identifier) {
// Do some stuff that gets the resource
return new SomeResource();
}
}
Y finalmente, el cliente de Fingir
@FeignClient("serviceName")
public interface ServiceClient extends ServiceInterface {
}
El cliente de Feign parece no leer las anotaciones heredadas. Entonces, ¿hay alguna otra forma en que pueda lograr lo mismo? ¿Dónde puedo convertir ServiceInterface en el cliente de Feign sin anotarlo directamente?