源码地址:https://download.csdn.net/download/weixin_42950079/87209379

SpringMVC拦截器 和 OpenFeign拦截器 的区别

初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器:

Spring MVC拦截器发生在客户端 和 服务端之间,在客户端向服务端发送请求时进行拦截处理。 Spring Cloud OpenFeign拦截器发生在两个不同的服务之间,在服务消费端发送请求远程调用服务提供方时进行拦截处理。

OpenFeign拦截器

OpenFeign拦截器有两种配置方式:

java方式配置 application.yml配置文件中配置

java方式配置

1、创建自定义拦截器类,并实现 RequestInterceptor 拦截器接口。

import feign.RequestInterceptor;

import feign.RequestTemplate;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class OpenFeignRequestInterceptor implements RequestInterceptor {

Logger logger = LoggerFactory.getLogger(this.getClass());

@Override

public void apply(RequestTemplate requestTemplate) {

// Todo

/**

* 根据需求可以在拦截器中扩展需要的功能:

* 1、日志记录

* 2、设置请求头 requestTemplate.header("xxx", "xxx");

* 3、增加参数

* 4、修改请求参数 / 修改路径

* 5、权限鉴定

* . . .

*/

logger.info("OpenFeign拦截器 . . .");

}

}

2、在配置类中 注入 自定义拦截器类( Bean )

import com.cd.order8010.feign.interceptor.OpenFeignRequestInterceptor;

import feign.Logger;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

/**

* 全局配置:加了@Configuration注解表示全局配置,对所有服务起作用

* 局部配置:不加@Configuration注解表示局部配置,只针对指定的一个服务起作用,需要在 OpenFeign 接口的@FeignClient注解中,通过configuration属性中指定 OpenFeign 的扩展配置类

*/

@Configuration

public class OpenFeignConfig {

// 日志级别配置

@Bean

public Logger.Level feignLoggerLevel(){

return Logger.Level.FULL;

}

// 自定义拦截器

@Bean

public OpenFeignRequestInterceptor openFeignRequestInterceptor(){

return new OpenFeignRequestInterceptor();

}

}

application.yml配置文件中配置

1、创建自定义拦截器类,并实现 RequestInterceptor 拦截器接口。

import feign.RequestInterceptor;

import feign.RequestTemplate;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class OpenFeignRequestInterceptor implements RequestInterceptor {

Logger logger = LoggerFactory.getLogger(this.getClass());

@Override

public void apply(RequestTemplate requestTemplate) {

// Todo

/**

* 根据需求可以在拦截器中扩展需要的功能:

* 1、日志记录

* 2、设置请求头 requestTemplate.header("xxx", "xxx");

* 3、增加参数

* 4、修改请求参数 / 修改路径

* 5、权限鉴定

* . . .

*/

logger.info("OpenFeign拦截器 . . .");

}

}

2、在application.yml配置文件中指定我们创建的自定义OpenFeign拦截器类。

feign:

client:

config:

stock-service: # 这里写default就是全局配置。如果是写服务名称(如:stock-service),则是针对某个微服务的配置,即局部配置

logger-level: BASIC #日志级别

request-interceptors: #自定义拦截器

- com.cd.order8010.feign.interceptor.OpenFeignRequestInterceptor

测试

推荐链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。