·在开发微服务应用时,我们会在主程序入口添加 @EnableFeignClients注解开启对Feign Client扫描加载处
理。根据Feign Client的开发规范,定义接口并加 @FeignClients注解。
·当程序启动时,会进行包扫描,扫描所有 @FeignClients的注解的类,并将这些信息注入Spring
IOC容器中。当定义的Feign接口中的方法被调用时,通 过JDK的代理的方式,来生成具体的RequestTemplate。
当生成代理时,Feign会为每个接口方法创建一个 RequetTemplate对象,该对象封装了HTTP请求需要的
全部信息,如请求参数名、请求方法等信息都是在这个 过程中确定的。
·然后由RequestTemplate生成Request,然后把 Request交给Client去处理,这里指的Client可以是JDK原
生的URLConnection、Apache的Http Client,也可以是
Okhttp。最后Client被封装到LoadBalanceClient类,这个 类结合Ribbon负载均衡发起服务之间的调用。