Feign拦截器应用 (F版)
Spring Cloud为开发者提供了在分布式系统中的一些常用的组件(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,决策竞选,分布式会话集群状态)。使用Spring Cloud开发人员可以快速地完成实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作
Feign
使用Spring Cloud时,通常会用 Feign 来调用远程服务,比如远程服务的权限验证,需要在 header 中传递 token之类的。在方法中显示传递又过于麻烦了,这时候就可以考虑使用 Feign 提供的RequestInterceptor 接口,只要实现了该接口,那么Feign每次做远程调用之前都可以被它拦截下来在进行包装
Try
准备三个工程,分别是 eureka-server、order-server、product-server
Eureka Server
详情参考第一章,或从文末的 GITHUB 链接获取对应篇幅的完整代码
Product Server
一个普通的 Eureka Client 即可,详情参考上一章,或从文末的 GITHUB 链接获取对应篇幅的完整代码
唯一变动
为了体现 RequestInterceptor 生效,将返回的消息做了下调整
1
|
|
Order Server
在上一章的基础之上做了扩展,创建一个 FeignInterceptor 实现 RequestInterceptor 的接口,这样就可以将需要传递的内容设置到 RequestTemplate 中,然后在服务的另外一端就可以通过 request.getHeader("key") 的方式进行获取了
1
|
|
流程图


浙公网安备 33010602011771号