feign是一个用于服务间api调用的组件
基础使用
导入依赖
org.springframework.cloud spring-cloud-starter-openfeign2.2.10.RELEASE
在需要调用接口的模块创建Feign服务API接口
在接口上添加@FeignClient注解来调用需要的接口,并且加了这个注解之后就不需要在此加@Component、@service等注解。注意!请求方式要与被请求的接口相同,参数注解也要与被请求接口相同,否则发送的数据会为null。
name:注册的服务名称
url:请求的地址
path:地址后面拼接的路径
configuration:Feign定义的配置类
下图是被调用的controller的路径
下图是调用其他服务接口的controller
在标注了@FeignClient注解的模块的启动类上加入@EnableFeignClients注解来启动feign注解配置,如果找不到接口则可以在该注解的参数加入包扫描(basePackages = "包路径"),但是加入包扫描后@ComponentScan()包扫描注解可能会失效。
如果显示No qualifying bean of type ‘org.springframework.boot.autoconfigure.http.HttpMessage之类的找不到bean的异常则需要注入以下的bean,
因为可能是在gateway下整合feign,SpringCloud中通过Feign接口实现服务的远程调用,对于数据的序列化和反序列化依旧借助了HttpMessageConverter(消息转换器),Spring Cloud Gateway是基于WebFlux的,是ReactiveWeb。所以HttpMessageConverters不会自动注入。
@Bean @ConditionalOnMissingBean public HttpMessageConverters messageConverters(ObjectProvider> converters) { return new HttpMessageConverters(converters.orderedStream().collect(Collectors.toList())); }
基础配置
feign: compression: request: # 配置请求支持GZIP压缩,默认为false enabled: true #配置压缩支持的Mime Type mime-types: text/xml,application/xml,application/json # 配置压缩数据大小的上下限 min-request-size: 1024 response: #配置响应支持GZIP压缩,默认为false enabled: true #解析GZIP格式 useGzipDecoder: true httpclient: connection-timeout: 2000 enabled: true client: # 修改默认配置的名称 默认名default default-config: default config: # feign的名称 feign-name: # 连接超时时间 connection-timeout: 5000 # 读取超时时间 read-timeout: 5000 # 日志配置级别 logger-level: full # 重试机制 retryer: feign.Default
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)