restTemplate 调用服务的不同的方式需要的服务实例是不一样的。
restTemplate 调用服务有以下几种方式:请求地址直接调用、服务名调用
请求地址直接调用
restTemplate实例如果使用@Autowire方式注入,url中直接写明调用接口具体的IP地址(域名)及端口号
服务名调用
服务名调用也可以分为两种方式:一种是自行获取注册中心的服务列表,根据服务名找到对应的服务实例进行调用;第二种方法就是使用@LoadBalanced注解,系统自动根据hostName来获取对应的服务实例,LoadBalancerInterceptor.intercept如下
public ClientHttpResponse intercept(final HttpRequest request, final byte[] body, final ClientHttpRequestExecution execution) throws IOException {
URI originalUri = request.getURI();
String serviceName = originalUri.getHost();
Assert.state(serviceName != null, "Request URI does not contain a valid hostname: " + originalUri);
return (ClientHttpResponse)this.loadBalancer.execute(serviceName, this.requestFactory.createRequest(request,