Spring Cloud 2.2.2 源碼之二十二Feign執行原理一
執行原理
首先是springmvc
分發調用到我們這個方法,因爲這個是代理對象,於是執行他的invoke
方法。
FeignInvocationHandler的invoke
其實沒做什麼,就是直接調用方法處理映射的SynchronousMethodHandler
的invoke
。
SynchronousMethodHandler的invoke
創建了一個請求模板,設置參數,然後進行執行。
executeAndDecode
先進行目標請求的配置。
可以有攔截器攔截,最後纔是目標的配置。
設置請求目標,也就是URL
:
然後進行log
輸出:
最後調用LoadBalancerFeignClient
來執行。
LoadBalancerFeignClient的execute
先創建FeignLoadBalancer.RibbonRequest
對象,其實就是封裝了一些請求信息。
然後獲取配置:
最終內部是這裏,說ribbon
的時候說過SpringClientFactory
會進行服務名和上下文的綁定,這裏傳進去就服務名,但是沒有上下文,會先創建AnnotationConfigApplicationContext
,裏面註冊一些ribbon
相關的配置,最後刷新,所以這裏就是把ribbon
給初始化了:
後面就是要創建FeignLoadBalancer
對象,來進行執行啦,下篇說吧。
好了,今天就到這裏了,希望對學習理解有幫助,大神看見勿噴,僅爲自己的學習理解,能力有限,請多包涵。