自定义拦截器(OpenFeign)

这篇具有很好参考价值的文章主要介绍了自定义拦截器(OpenFeign)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

拦截器代码

package com.learning.springcloud.order.feign;

import feign.RequestInterceptor;
import feign.RequestTemplate;

import java.util.UUID;

public class CustomFeignInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate requestTemplate) {
        // eg: 统一自定义请求信息信息    
        String customHeaderInfo = UUID.randomUUID().toString();    
        requestTemplate.header("custom_header_info", customHeaderInfo);
    }
}

拦截器配置

配置类

package com.learning.springcloud.order.feign.config;

import com.learning.springcloud.order.feign.FeignAuthRequestInterceptor;
import feign.Logger;
import feign.Request;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Configuration 作用域为所有的服务提供方  全局配置
 * 局部配置: FeignClient configuration的值
 */
@Configuration
public class FeignConfig {


    @Bean
    public Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }

//   修改契约为 Feign默认注解方式
//    @Bean
//    public Contract feignContract(){
//        return  new Contract.Default();
//    }

    @Bean
    public Request.Options options() {
        // 第一个 连接超时  第二个 读取超时
        return new Request.Options(5000, 10000);
    }

    /**
     * 自定义请求拦截器
     *
     * @return
     */
    @Bean
    public CustomFeignInterceptor customFeignInterceptor() {
        return new CustomFeignInterceptor();
    }

}

配置文件 application.yml

# springboot 默认日志级别是info  因此 feign的debug日志级别就不会输出
logging:
  level:
    com.learning.springcloud.order.feign: debug

# 局部日志配置
feign:
  client:
    config:
      product-service: # 服务名称
        logger-level: BASIC  # 基础日志
#        contract: feign.Contract.Default # 指定Feign原生注解契约配置
        connect-timeout: 5000
        read-timeout: 10000
      stock-service:
        request-interceptors:
          - com.learning.springcloud.order.feign.CustomFeignInterceptor

效果查看

  • 全量的调用日志中可以查看到自定义拦截器增加的 custom_header_info 字段文章来源地址https://www.toymoban.com/news/detail-802865.html

2024-01-14 17:47:21.138 DEBUG 11076 --- [nio-8040-exec-1] c.l.s.order.feign.StockFeignService      : [StockFeignService#reductStock] ---> GET http://stock-service/stock/reduct HTTP/1.1
2024-01-14 17:47:21.138 DEBUG 11076 --- [nio-8040-exec-1] c.l.s.order.feign.StockFeignService      : [StockFeignService#reductStock] custom_header_info: bf8bd0a9-d7b6-446b-937c-7314610a3895

到了这里,关于自定义拦截器(OpenFeign)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • flume自定义拦截器

    要自定义 Flume 拦截器,你需要编写一个实现 org.apache.flume.interceptor.Interceptor 接口的自定义拦截器类。以下是一个简单的示例: 在上面的示例中,我们实现了 initialize() 、 intercept() 、 intercept(ListEvent events) 、 close() 方法来定义自定义拦截器的行为。你可以根据需要在这些方法中

    2024年01月23日
    浏览(46)
  • WebService 客户端增加Header头、并且指定命名空间、添加拦截器(日志拦截器,自定义拦截器)、soap:Envelope 添加命名空间

    1.增加Header头 生成XML结果如下 2.添加拦截器 3.soap:Envelope 添加命名空间 生成XML结果如下

    2024年02月10日
    浏览(50)
  • Springboot中自定义拦截器

    Spring Boot 中使用拦截器 参考:https://blog.csdn.net/taojin12/article/details/88342576?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170823498416800197050192%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257Drequest_id=170823498416800197050192biz_id=0utm_medium=distribute.pc_search_result.none-task-blog-2 all top_positive~defa

    2024年02月19日
    浏览(57)
  • 自定义注解与拦截器实现不规范sql拦截(自定义注解填充插件篇)

    在自定义注解与拦截器实现不规范sql拦截(拦截器实现篇)中提到过,写了一个idea插件来辅助对Mapper接口中的方法添加自定义注解,这边记录一下插件的实现。 在上一篇中,定义了一个自定义注解对需要经过where判断的Mapper sql方法进行修饰。那么,现在想使用一个idea插件来

    2024年01月23日
    浏览(51)
  • 自定义MyBatis拦截器更改表名

    by emanjusaka from ​ https://www.emanjusaka.top/2023/10/mybatis-interceptor-update-tableName 彼岸花开可奈何 本文欢迎分享与聚合,全文转载请留下原文地址。 自定义MyBatis拦截器可以在方法执行前后插入自己的逻辑,这非常有利于扩展和定制 MyBatis 的功能。本篇文章实现自定义一个拦截器去改

    2024年02月08日
    浏览(44)
  • SpringBoot自定义拦截器interceptor使用详解

    Spring Boot拦截器Intercepter详解 Intercepter是由Spring提供的Intercepter拦截器,主要应用在日志记录、权限校验等安全管理方便。 使用过程 1.创建自定义拦截器,实现HandlerInterceptor接口,并按照要求重写指定方法 HandlerInterceptor接口源码: 根据源码可看出HandlerInterceptor接口提供了三个

    2024年02月13日
    浏览(38)
  • 防重复提交:自定义注解 + 拦截器(HandlerInterceptor)

    防重复提交:自定义注解 + 拦截器(HandlerInterceptor) 一、思路: 1、首先自定义注解; 2、创建拦截器实现类(自定义类名称),拦截器(HandlerInterceptor); 3、创建类:配置拦截器路径(拦截URL规则); 二、代码示例: 1、首先自定义注解; 2、创建拦截器实现类(自定义类名

    2024年02月10日
    浏览(41)
  • SpringBoot定义拦截器+自定义注解+Redis实现接口防刷(限流)

    在拦截器Interceptor中拦截请求 通过地址+请求uri作为调用者访问接口的区分在Redis中进行计数达到限流目的 定义参数 访问周期 最大访问次数 禁用时长 代码实现 定义拦截器:实现HandlerInterceptor接口,重写preHandle()方法 注册拦截器:配置类实现WebMvcConfigurer接口,重写addIntercep

    2024年02月05日
    浏览(59)
  • 利用Mybatis拦截器实现自定义的ID增长器

    原生的Mybatis框架是没有ID自增器,但例如国产的Mybatis Plus却是支持,不过,Mybatis Plus却是缺少了自定属性的填充;例如:我们需要自定义填充一些属性,updateDate、createDate等,这时Mybatis Plus自带的ID自增器就无法满足需求;这种时候我们就需要自定义的ID增加器,可以自定义

    2024年02月19日
    浏览(46)
  • Django实战项目-学习任务系统-自定义URL拦截器

    接着上期代码框架,6个主要功能基本实现,剩下的就是细节点的完善优化了。 首先增加URL拦截器,你不会希望没有登录用户就可以进入用户主页各种功能的,所以增加URL拦截器可以解决这个问题。 Django框架本身也有URL拦截器,但是因为本系统用户模型跟Django框架本身用户模

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包