Spring Cloud Alibaba-Feign的组成和细粒度配置自定义

1,208 阅读2分钟

一、Feign的组成

| 接口               | 作用                                                                     | 默认值                                                                                   |
| ------------------ | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
| Feign.Builder      | Feign的入口                                                              | Feign.Builder                                                                            |
| Client             | Feign底层用什么去请求                                                    | 和Ribbon配合时:LoadBalancerFeignClient<br />不和Ribbon配合时:Feign.Client.Default |
| Contract           | 契约,注解支持                                                           | SpringMVC Contract                                                                       |
| Encoder            | 解码器,用于将独享转换成HTTP请求消息体                                   | SpringEncoder                                                                            |

| Decoder | 编码器,将相应消息体转成对象 | ResponseEntityDecoder | | Logger | 日志管理器 | Slf4jLogger | | RequestInterceptor | 用于为每个请求添加通用逻辑(拦截器,例子:比如想给每个请求都带上heared) | 无 |

Feign.Client.Default 利用的是我们默认的HttpURLConnection,他是没有连接池的。也没有资源管理这个概念,性能不是很好,

image.png

二、细粒度配置自定义

1、代码方式-指定日志级别

feign默认是不打印任何日志的,但是我们希望打印一些日志信息。比如调用的时间。

Feign设置方式就不同的,他有四个级别如下:

级别打印日志内容
NONE(默认值)不记录任何日志
BASIC仅记录请求方法、URL、响应状态代码以及执行时间
HEADERS记录BASIC级别的基础上,记录请求和响应的header
FULL记录请求和响应的header、body和元数据

1.1 指定springboot日志

Feign日志是基于Spring boot的日志所以先设置SpringBoot日志:

logging:
  level:
    com.msb: debug

1.2 创建配置类

BASIC使用于生产环境 FULL适用于开发环境

创建配置类UserFeignConfiguration ,注意这里并没有增加@Configuration

package com.msb.order.configuration;

import feign.Logger;
import org.springframework.context.annotation.Bean;
//这里不能增加@Configuration,如果添加了就会变为全局配置文件。
public class StockFeignConfiguration {
    @Bean
    public Logger.Level level(){
        return Logger.Level.FULL;
    }
}

更改请求feign的配置文件。

1.3 将配置类引入

image.png

2、属性方式-指定日志级别

feign.client.config.<feignName>.loggerLevel:full

logging:
  level:
    com.msb: debug
feign:
  client:
    config:
      msb-stock:
        loggerLevel: full

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情