feign的工作原理和流程?
1.在開發(fā)微服務時,會在主程序入口添加@EnableFeignClients注解開啟對Feign Client掃描加載處理。根據(jù)Feign Client的開發(fā)規(guī)范,定義接口并加@FeignClient注解。
2.當程序啟動時,會進行包掃描,掃描所有@FeignClient注解的類,并將這些信息注入Spring IoC容器中。當定義的Feign接口中的方法并調(diào)用時,通過JDK的代理方式,來生成具體的RequestTemplate。當生成代理時,F(xiàn)eign會為每個接口方法創(chuàng)建一個RequestTemplate對象,該對象封裝了HTTP請求需要的全部信息,如請求參數(shù)名、請求方法等信息都在這個過程中確定。
3然后又RequestTemplate生成Request,然后把這個Request交給client處理,這里指的Client可以是JDK原生的URLConnection、Apache的Http Client,也可以是Okhttp。最后Client被封裝到LoadBalanceClient類,這個類結(jié)合Ribbon負載均衡發(fā)起服務之間的調(diào)用。