首页 > 作文

使用Feign动态设置header和原理分析

更新时间:2023-04-06 01:09:28 阅读: 评论:0

feign动态设置header和原理

项目中用到了feign做远程调用, 有部分场景需要动态配置header

开始的做法是通过 @requestheader 设置参数来实现动态的header配置

例如

这种方式虽然可以达到header的动态配置, 但是当参数过多时会降低接口可用性, 所以想通过传递bean的方式来设置header

先说解决办法

自定义interceptor实现requestinterceptor接口, 回调方法apply提供了requesttemplate对象, 对象内部封装了request的所有信息, 最后通过configuration指定接口, 之后就随便你怎么玩了(例如通过body获取接口参数并动态设置header)

值得注意的一点是headerinterceptor如果注入到springboot容器的话会全局生效, 就是说及时没有指定configuration也会对全局feign接口生效, 为什么呢? 这里简单说明一下

首先feign为每个feign class创建springcontext上下文

spring通过调用getobject获取feign工厂实例

内部调用feignclientfatorybean.gettarget()方法

根据feign(feigncontext context)构建builder

在构建过程中通过feignclientfactorybean.configure任长霞电影usingconfiguration为feign class注册基本的配置项, 其中也包括了interceptor的注册

contextid为具体的feign class id, requestintercep人口普查2020具体内容tor为具体的接口, 即是说通过context.getinstances获取所有requestinterceptor实例并注册到builder中.

获取工厂中的实例使用的是beannamesfortypeincludingancestors方法, 该方法不仅会从feign的factory中查找, 也会通过父级别spring工厂查找相应实例(类似于springmvc的工厂)

也是因为该方法, 即使你没有在feignclient中配置configuration, 但是你的interceptor通过@component等方法注入容器的话也会全局生效的, 所以如果指向让你的interceptor部分生效不让它注入到spring容器就好

设置feign的header信息(两种形式)

在使用微服务springcloud全家桶组件fegin的时候,我们在进行远程服务之间调用的军训小结同时,为了防止客户端劫持信息,我们需要将一些敏感信息添加到我们的fegin头部(header)当中,今天朋友问起,总结一下:那么工作中常见的方式有两种

1.在方法参数前面添加@requestheader注解

使用@requestheader军训征文(name = “id̶外国文学论文1;)可以传递动态header属性

2.实现requestinterceptor接口

设置header(所有的fegin请求)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-06 01:09:26,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/0ee8be65a1d5d934852cfdd29d294f07.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:使用Feign动态设置header和原理分析.doc

本文 PDF 下载地址:使用Feign动态设置header和原理分析.pdf

标签:接口   方法   动态   也会
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图