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
|
|
流程图