RequestInterceptor
RequestInterceptor为Feign的拦截器,整体的请求都会经过这个拦截器来进行处理。比如说我们在做分布式项目调度的时候可以自定义RequestInterceptor
来实现头传递等处理。当然了RequestInterceptor也是一个接口。
public interface RequestInterceptor {
// 处理
void apply(RequestTemplate template);
}
真整去调用拦截器的方法在SynchronousMethodHandler
的executeAndDecode
方法,来调用targetRequest
。
// 构建请求信息
Request targetRequest(RequestTemplate template) {
// 循环设置拦截器
for (RequestInterceptor interceptor : requestInterceptors) {
interceptor.apply(template);
}
// 获取真正的Request对象
// 如果直接使用feign-core 默认使用的也就是之前所说的HardCodedTarget硬编码的target
return target.apply(template);
}