这是本人学习的总结,主要学习资料如下
- 马士兵教育
- 1、给Feign配置的方式
- 1.1、通过Bean配置
- 1.2、application.yaml配置
- 2、配置日志
- 2.1、日志级别
- 1.2、指定日志级别
- 1.2.1、通过Bean配置
- 1.2.2、application.yaml配置
- 3、Inteceptor配置
1、给Feign配置的方式
我们有两种方式配置Feign
,一种是通过application.properties
配置文件,另一种是在代码中加入Bean
配置。
比如说Feign
中我们可以配置日志级别,日志级别的降低可以让Feign
打印出更丰富的日志。
日志级别有NONE, BASIC, HEADERS, FULL
,他们对应着feign.Logger.Level
中定义的枚举值。
1.1、通过Bean配置
首先写一个配置的Bean,返回日志级别。
public class LogConfiguration {@Beanpublic Logger.Level logLevel() {return Logger.Level.FULL;}
}
然后在@FeignClient
那里指定配置类。
@FeignClient(name="user-client", configuration = LogConfiguration.class)
public interface UserFeignClient {}
这时结果,打印了header,请求路径等几乎所有的信息。
1.2、application.yaml配置
这是更简单的方式。其中user-client
是提供远程服务的应用,其spring.application.name=user-client
feign:client:config:user-client:loggerLevel: full
2、配置日志
Open Feign
默认是不打印任何日志的,我们需要额外的配置才能启用日志。
这里是集成Slf4j
的示例。
2.1、日志级别
- NONE(default):不记录任何日志。
- BASIC:只记录请求方法,URL,状态响应码和执行时间。通常用于生产环境。
- HEADERS:在BASIC的基础上,还记录请求和响应的header。
- FULL:在HEADERS的基础上,还记录body和元数据。可以用在开发环境,方便定位问题。
1.2、指定日志级别
1.2.1、通过Bean配置
首先写一个配置的Bean,返回日志级别。
public class LogConfiguration {@Beanpublic Logger.Level logLevel() {return Logger.Level.FULL;}
}
1.2.2、application.yaml配置
这是更简单的方式。其中user-client
是提供远程服务的应用,其spring.application.name=user-client
feign:client:config:user-client:loggerLevel: full
3、Inteceptor配置
我们可以配置统一的拦截器,一种是在接受所有请求前预处理请求,另一种是发送请求前的预处理。
预处理发送的请求是实现RequestInteceptor
。下面是示例。
预处理发送的请求是向所有请求中塞入token这个header。
public class FeignConfiguration {@Bean// feign.RequestInterceptorpublic RequestInterceptor requestInterceptor() {RequestInterceptor interceptor = new RequestInterceptor() {@Overridepublic void apply(RequestTemplate requestTemplate) {requestTemplate.header("token", "1111111");}};return interceptor;}}