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