代码如下
通过实现RequestInterceptor 接口,重写apply方法逻辑,设置相应的参数,此时在业务方法中远程调用对应接口时,都会携带这些参数,可在远程调用接口所在服务中进行解析使用。
import feign.RequestInterceptor;
import feign.RequestTemplate;
import javax.servlet.http.HttpServletRequest;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@Configuration
public class FeignClientRequestInterceptor implements RequestInterceptor {
public FeignClientRequestInterceptor() {
}
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
if (null != attributes) {
HttpServletRequest request = attributes.getRequest();
requestTemplate.header("Authorization", new String[]{request.getHeader("Authorization")});
requestTemplate.header("resourceId", new String[]{request.getHeader("resourceId")});
}
}
}