一、feign的原理
EnableFeignClients会引入一个FeignClientsRegistrar,他主要就是扫描@FeignClient注解的类,然后放到beanDefinition中。
他会生成一个JDK代理,利用的核心invocation就是 HystrixInvocationHandler,他会调用
LoadBalancerFeignClient,这个是核心的中转类,从这里就可以看到和ribbon类似了
URI asUri = URI.create(request.url());
String clientName = asUri.getHost();
URI uriWithoutHost = cleanUrl(request.url(), clientName);
FeignLoadBalancer.RibbonRequest ribbonRequest = new FeignLoadBalancer.RibbonRequest(
this.delegate, request, uriWithoutHost);
IClientConfig requestConfig = getClientConfig(options, clientName);
return lbClient(clientName).executeWithLoadBalancer(ribbonRequest,
requestConfig).toResponse();
本文详细介绍了Feign库的原理,特别是EnableFeignClients如何扫描带有@FeignClient注解的类,并通过JDK代理和HystrixInvocationHandler实现服务发现,类似于Ribbon。重点讲解了LoadBalancerFeignClient作为核心中转类的作用和过程。

被折叠的 条评论
为什么被折叠?



