feign是一个用于服务间api调用的组件

基础使用

导入依赖

      <!-feign依赖--> 
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.10.RELEASE</version>
        </dependency>

在需要调用接口的模块创建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<HttpMessageConverter<?>> 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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐