首先,通过@EnableFeignClients注解并开启扫描,将注解了@FeignClient的接口信息通过BeanUtils生成bean注入到IOC容器;
当接口被调用时候,通过jdk动态代理,生成具体的requestTemplate,requestTemplate生成request,request交给Client处理,可以是httpUrlConnection或者是okhttp,最后client被封装到LoadBalanceClient类,这个类结合了ribbon做到了负载均衡;
RestFul风格,简洁
dubbo的RPC调用性能更快,但是代码强依赖性,迭代不是很方便
Feign有其他的一些功能实现,比如错误处理,重试机制,hystrix扩展,ribon扩展等等
Feign实际上是整合了ribbon客户端负载均衡+hysterix断路器