¿Qué es fingir?
Feign puede ocultar la solicitud de Rest y pretender ser un controlador similar a SpringMVC. No necesita empalmar los parámetros de url y empalme. Feign lo hará.
Feign es un cliente Http declarativo y con plantilla desarrollado por Netflix, inspirado en Retrofit, JAXRS-2.0 y WebSocket.
Feign puede ayudarnos a llamar a HttpApi de manera más cómoda y elegante.
SpringCloud ha mejorado Feign, hizo que Feign admitiera las anotaciones SpringMVC e integró Ribbon y Eureka, lo que hace que Feign sea más conveniente de usar.
Uso inicial de Fingir
Importar dependencias
<dependency> <groupId> org.springframework.cloud </groupId> <artifactId> spring-cloud-starter-openfeign </artifactId> </dependency>
Enciende Fingir
Agregue comentarios para habilitar la función Fingir.
@SpringCloudApplication @EnableFeignClients // 开启feign 客户 端 public class ItcastServiceConsumerApplication { public static void main (String [] args) { SpringApplication.run (ItcastServiceConsumerApplication. Class , args); } }
Eliminar RestTemplate : Feign ha heredado automáticamente el Equilibrio de carga RestTemplate de la cinta. Por lo tanto, no es necesario registrar RestTemplate aquí.
Fingir cliente
@FeignClient (valor = "-Servicio-Proveedor") // marcada fingir la clase de interfaz es un público interfaz UserClient { @GetMapping ( "Usuario / {ID}" ) el usuario queryById (@PathVariable ( "ID" ) Largo ID); }
Esta es una interfaz, Feign nos ayudará a generar la clase de implementación a través del proxy dinámico. Esto es muy similar al mapeador Mybatis.
@FeignClient, declara que este es un cliente Feign, similar a la anotación @Mapper. También especifique el nombre del servicio a través del atributo de valor.
El método de definición en la interfaz usa anotaciones SpringMVC. Feign nos ayudará a generar URLs basadas en las anotaciones y acceder a los resultados.
@Controller @RequestMapping ( "consumidor / usuario" ) clase pública UserController { @Autowired private UserClient userClient; @GetMapping @ResponseBody public User queryUserById (@RequestParam ("id" ) Long id) { Usuario usuario = this .userClient.queryUserById (id); usuario de retorno ; } }
Balanceo de carga
La dependencia de la cinta y la configuración automática ya están integradas en Feign.
Por lo tanto, no es necesario introducir dependencias adicionales y no es necesario registrar objetos RestTemplate.
Soporte Hystrix
Fingir también hereda Hystrix por defecto.
Está desactivado de forma predeterminada y debe activarse mediante los siguientes parámetros:
fingir: hystrix: enabled: true # Activar la función de fusible de Feign
Solicitar compresión
Spring Cloud Feign admite la compresión GZIP de solicitudes y respuestas para reducir la pérdida de rendimiento durante la comunicación.
La función de compresión de la solicitud y la respuesta se puede habilitar a través de los siguientes parámetros:
fingir: compresión: solicitud: habilitado: verdadero # habilitar solicitud de respuesta de compresión : habilitado: verdadero # habilitar respuesta de compresión
Al mismo tiempo, también puede establecer el tipo de datos solicitado y el límite inferior del tamaño que desencadena la compresión:
fingir: compresión: solicitud: habilitado: verdadero # Habilitar compresión mime -tipos: texto / html, aplicación / xml, aplicación / json # Establecer el tipo de datos comprimido min -request-size: 2048 # Establecer el límite inferior del tamaño que desencadena la compresión
Nivel de registro
Establezca el nivel de registro mediante logging.level.xx = debug.
Esto no tendrá ningún efecto en el cliente de Feign, porque el cliente modificado de anotación @FeignClient creará una nueva instancia de Feign.Logger cuando esté proxy.
Necesita especificar el nivel de este registro.
registro:
nivel:
cn.itcast: depuración
@Configuration public class FeignLogConfiguration { @Bean Logger.Level feignLoggerLevel () { return Logger.Level.FULL; } }
NINGUNO: no registre ninguna información de registro, el valor predeterminado.
BÁSICO: solo registre el método de solicitud, la URL y el código de estado de respuesta y el tiempo de ejecución.
Encabezados: sobre la base de BASIC, se registra información adicional de encabezado de solicitud y respuesta.
COMPLETO: Registre los detalles de todas las solicitudes y respuestas, incluida la información del encabezado, el cuerpo de la solicitud y los metadatos.
Especifique la clase de configuración en FeignClient
@FeignClient (value = "service-privider", fallback = UserFeignClientFallback. Class , configuration = FeignConfig. Class ) public interface UserFeignClient { @GetMapping ( "/ user / {id}" ) User queryUserById (@PathVariable ( "id" ) Long carné de identidad); }