具体的源码解析查看博客https://blog.csdn.net/forezp/article/details/73480304
对Feign的总结
1.Feign是伪客户端,不处理任何的请求。请求的处理被封装到注解中。
2.在启动配置中会检查是否有@EnableFeignClients注解,若有,会进行包扫描,扫描所有被@FeignClient注解的接口,并提取相应的信息,然后将信息注入到IOC容器中
3.当接口内的方法被调用的时候会通过jdk代理,生成具体的requestTemplate
4.通过requestTemplate生成request
5.request会交给client组件,来完成请求的发送,client可以是httpurlconnection,httpclient或okhttp
6. 最后会将client封装到LoadBalanceClient,并结合Ribbon实现客户端的负载均衡