上一篇文章我们分析了ribbon的核心原理,接下来我们来看看springcloud是如何集成ribbon的,不同的springcloud的组件(feign,zuul,RestTemplate)集成ribbon有所不同,这篇文章先来看看RestTemplate。
RestTemplate的类图如下
HttpAccessor
主要根据ClientHttpRequestFactory
创建ClientHttpRequest
InterceptingHttpAccessor
扩展了HttpAccessor
,创建拦截的InterceptingClientHttpRequest
,这里会设置拦截器ClientHttpRequestInterceptor
,这是集成ribbon的核心,当RestTemplate
发起http请求调用的时候,会先经过拦截器,然后才真正发起http请求。拦截器ClientHttpRequestInterceptor
是如何被设置的呢?在LoadBalancerAutoConfiguration
类中,有如下代码:
@LoadBalanced @Autowired(required = false) private ListrestTemplates = Collections.emptyList();