【微服务笔记06】微服务组件之OpenFeign配置信息及RequestInterceptor请求拦截器

这篇具有很好参考价值的文章主要介绍了【微服务笔记06】微服务组件之OpenFeign配置信息及RequestInterceptor请求拦截器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章,主要介绍微服务组件之OpenFeign相关配置信息及RequestInterceptor请求拦截器的使用。

目录

一、OpenFeign注解和配置信息

1.1、常见注解

(1)@EnableFeignClients

(2)@FeignClient

1.2、常见配置信息

二、RequestInterceptor请求拦截器

2.1、实现RequestInterceptor接口

2.2、全局配置拦截器

2.3、局部配置拦截器


一、OpenFeign注解和配置信息

1.1、常见注解

(1)@EnableFeignClients

@EnableFeignClients 注解:启用OpenFeign组件,可以设置一个扫描路径,这样在启动工程的时候,OpenFeign就会扫描工程中指定的包路径下,所有包含【@FeignClient】的类,将其作为OpenFeign客户端。这个注解中含有下面几个属性:

  • basePackages:指定扫描的包路径,是一个数组类型,可以多个包路径。
  • value:作用和basePackages是一样的。
  • clients:直接指定 FeignClient 客户端的类对象,是一个Class数组。

一般情况下,@EnableFeignClients 注解都是直接在启动类上面使用即可,默认就是扫描所在类的包及其子包路径。

(2)@FeignClient

@FeignClient 注解:将某个接口标记为 OpenFeign 的客户端对象,OpenFeign 根据 @FeignClient 注解扫描指定的接口,然后为其生成对应的代理对象,实现微服务接口的调用。该注解常见属性有如下几个:

  • value、name:设置调用微服务的服务名称(注意:接口调用时候,就是根据这个名称从注册中心获取对应的IP和Port端口)。
  • path: 设置方法级别的路径前缀,例如:调用的接口路径都包含 /api 则可以提取出来,放到 path 属性里面。
  • fallback: 服务调用异常时候,会调用 fallback 指定类中的对应方法,实现服务的降级功能(注意:这个指定的类,必须是实现了@FeignClient 注解对应的接口)。
// 声明当前接口采用 OpenFeign 进行调用 service-provider 微服务
@FeignClient(value = "service-provider", path = "/api", fallback = ApiFallback.class)
public interface ApiProviderFeign {

    // 定义调用的接口
    @PostMapping("/service/provider/getUserInfo")
    Map<String, String> getUserInfo(@RequestParam("username") String username);

}

// 这是对应的实现类
public class ApiFallback implements ApiProviderFeign{
    /**
     * 调用失败时候,会执行这个方法
     */
    @Override
    public Map<String, String> getUserInfo(String username) {
        return new HashMap<>();
    }
}

1.2、常见配置信息

FeignClientProperties 是 OpenFeign 的配置属性类,其中有一个 config 属性,这个属性是一个Map集合,可以配置多个FeignClientConfiguration 类型的配置属性。Map集合中的key就是微服务名称,value就是FeignClientConfiguration类型的配置信息。

【微服务笔记06】微服务组件之OpenFeign配置信息及RequestInterceptor请求拦截器,微服务笔记,微服务,OpenFeign,请求拦截器,OpenFeign拦截器,OpenFeign配置信息

在application.yml配置文件里面,可以添加feign相关的配置信息,常见的配置信息有如下这些:

  • loggerLevel:日志级别,四个取值:
    • NONE 不打印日志;
    • BASIC:只打印请求方法、URL、响应状态码、执行时间。
    • HEADERS:打印请求头、响应头的日志信息。
    • FULL:打印所有日志。
  • connectTimeout:连接超时时间,单位毫秒:ms。
  • readTimeout:读取超时时间,单位毫秒:ms。
  • retryer:重试策略。
  • requestInterceptors:自定义的拦截器,可以多个,是一个List集合。
  • defaultRequestHeaders:默认的请求头信息。
  • defaultQueryParameters:默认的查询参数信息。
  • followRedirects: 是否允许重定向。

【微服务笔记06】微服务组件之OpenFeign配置信息及RequestInterceptor请求拦截器,微服务笔记,微服务,OpenFeign,请求拦截器,OpenFeign拦截器,OpenFeign配置信息

二、RequestInterceptor请求拦截器

RequestInterceptor是OpenFeign提供的一个拦截器,它可以在每一次接口调用之前,对这个接口进行拦截器,你可以对这个接口做一些额外的处理,例如:权限认证、添加请求头信息等等操作。

2.1、实现RequestInterceptor接口

  • 自定义一个类,实现RequestInterceptor接口,重写【apply()】方法。
package com.gitee.code.interceptor;

import feign.RequestInterceptor;
import feign.RequestTemplate;

/**
 * @version 1.0.0
 * @Date: 2023/4/5 8:49
 * @Copyright (C) ZhuYouBin
 * @Description: 请求拦截器
 */
public class CustomFeignInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate template) {
        // TODO 在这里可以实现一些自定义的逻辑,例如:用户认证
        System.out.println("执行拦截器....");
    }
}

2.2、全局配置拦截器

上面虽然写好了拦截器,但是OpenFeign还不知道有这个拦截器,所以还需要通过配置,告诉OpenFeign使用我自己编写的拦截器。编写一个配置类,使用@Configuration注解,并且使用@Bean注解将RequestInterceptor注入到IOC容器里面。

  • 注意:这种方式配置的拦截器,是对所有的FeignClient都生效的。
package com.gitee.code.config;

import com.gitee.code.interceptor.CustomFeignInterceptor;
import feign.RequestInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @version 1.0.0
 * @Date: 2023/4/5 8:53
 * @Copyright (C) ZhuYouBin
 * @Description: OpenFeign 配置类
 */
@Configuration
public class FeignConfig {
    /**
     * 注入自定义的拦截器
     */
    @Bean
    public RequestInterceptor requestInterceptor() {
        return new CustomFeignInterceptor();
    }

}

2.3、局部配置拦截器

有些时候,我们可能不想所有的FeignClient都使用拦截器,只是某一个FeignClient可能要使用拦截器的功能,那么这个时候就不能采用全局配置的方式,需要采用局部配置的方式,局部配置是在【application.yml】配置文件中设置。

  • 注意:采用下面这种配置,只会针对【service-provider】的微服务请求执行拦截器。
# feign 配置
feign:
  client:
    config:
      # 这里写微服务的服务名称,例如:我这里写的是 service-provider 服务名称
      # 针对 service-provider 微服务的请求,都将执行这些配置信息
      service-provider:
        loggerlevel: full
        # 配置请求拦截器,可以多个
        requestInterceptors:
          - com.gitee.code.interceptor.CustomFeignInterceptor

到此,OpenFeign配置信息和RequestInterceptor请求拦截器就介绍完啦。

综上,这篇文章结束了,主要介绍微服务组件之OpenFeign相关配置信息以及RequestInterceptor请求拦截器的使用。文章来源地址https://www.toymoban.com/news/detail-629233.html

到了这里,关于【微服务笔记06】微服务组件之OpenFeign配置信息及RequestInterceptor请求拦截器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • SpringCloud 微服务系列——【服务间的通信方式、OpenFeign、Hystrix组件使用】

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:SpringCloud 微服务学习专栏 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:SpringCloud 微服

    2023年04月24日
    浏览(35)
  • SpringCloud入门(微服务调用 OpenFeign)——从RestTemplate到OpenFeign & OpenFeign的相关配置 & 源码的分析和请求流程拆解

    在之前的博客中,我们介绍了RestTemplate的使用,博客文章如下连接。但是在使用RestTemplate的时候,需要把生产者的路径拼出来,非常繁琐,另外参数的传递的也比较繁琐,解决方案就是使用openFeign。 SpringCloud入门(RestTemplate + Ribbon)——微服务调用的方式 RestTemplate的使用 使

    2024年04月11日
    浏览(30)
  • 06.微服务组件 Gateway

    1、Gateway 简介 在SpringCloud中网关的实现包括两种: Zuul是基于Servlet的实现,属于阻塞式编程。 SpringCloudGateway是基于Spring5中提供的WebFlux心属于响应式编程的实现,具备更好的性能。 2、搭建网关服务 步骤一:创建gateway服务,引入依赖 步骤二:配置nacos地址、路由等信息 路由

    2024年02月04日
    浏览(31)
  • Spring Cloud ( openFeign 服务发现、配置、公共client抽取 )

    本章目录: openFeign的引出 快速入门 引入依赖 添加@EnableFeignClients注解 编写FeignClient接口 使用FeignClient中定义的方法代替RestTemplate 日志配置 连接池配置 公共client抽取 先来看我们之前服务通信使用的方法: 我们调用RestTemplate的getObject并手写url来完成服务调用,这样做的缺点是

    2023年04月08日
    浏览(35)
  • 《Spring Cloud学习笔记:Nacos配置管理 & OpenFeign & LoadBalancer & Getway》

    基于Feign的声明式远程调用(代码更优雅),用它来去代替我们之前的RestTemplate方式的远程调用 首先我们来看一下,微服务架构下关于配置文件的一些问题: 配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散在各个微服务中,不

    2024年02月04日
    浏览(43)
  • 漏刻有时地理信息系统LOCKGIS小程序配置说明(web-view组件、服务器域名配置、复制链接和转发功能)

    漏刻有时地理信息系统说明文档(LOCKGIS、php后台管理、三端一体PC-H5-微信小程序、百度地图jsAPI二次开发、标注弹窗导航) 漏刻有时地理信息系统LOCKGIS小程序配置说明(web-view组件、服务器域名配置、复制链接和转发功能) 漏刻有时地理信息系统LOCKGIS主程序配置说明(地图调起弹

    2024年02月07日
    浏览(46)
  • 【微服务笔记17】微服务组件之Gateway实现动态路由、配置路由规则、路由过滤器

    这篇文章,主要介绍微服务组件之Gateway实现动态路由、配置路由映射规则、路由过滤器。 目录 一、动态路由配置 1.1、动态URI路由配置 (1)引入eureka客户端依赖 (2)添加路由配置 1.2、服务名称转发配置 二、断言配置规则 2.1、路由断言工厂类 2.2、Path路径匹配 2.3、Query请求

    2023年04月23日
    浏览(40)
  • 【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等)

    这篇文章,主要介绍JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等)。 目录 一、基础组件元素 1.1、StaticText 1.2、TextField 1.3、Image 1.4、Break分页 1.5、Rectangle矩形区域 1.6、Ellipse椭圆区域 1.7、Line斜线 1.8、Generic组件(TODO) 1.9、Frame组件(TODO) 1.10、Subreport组件

    2024年02月10日
    浏览(37)
  • 投资学U06 风险资产配置 习题笔记

    根据博迪投资学第九版课后习题完成的系列。每道题都有完整的步骤,附上推理过程和错误答案批驳,以辅助理解。市面上的笔记和视频都太乱,希望这份笔记能以数理严谨性帮到大家。 中英文习题都是一样的,部分数据中文版教材有修改,笔记会注明。供学习博迪投资学,

    2024年02月11日
    浏览(31)
  • 【openfeign】OpenFeign的扩展、日志、超时时间、拦截器、客户端组件、压缩

    有时候我们遇到Bug,比如接口调用失败、参数没收到等问题,或者想看看调用性能,就需要配置Feign的日志了,以此让Feign把请求信息输出来。 定义一个配置类,指定日志级别: 通过源码可以看到日志等级有4种,分别是: NONE:不记录任何日志(默认值),性能最佳,适用于

    2024年02月12日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包