天天看點

SpringCloud學習筆記-應用間通信-RestTemplate

HTTP  vs RPC

dubbo   是rpc協定|

SpringCloud  是http調用

SpringCloud中服務間兩種restful調用方式

RestTemplate

Feign

RestTemplate

第一種方式

RestTemplate restTemplate=new RestTemplate();

String str=restTemplate.getForObject("url",String.class);
           

url是要調用的服務的url(服務名稱+接口名稱)

伺服器叢集是不确定ip 和端口的。是以這種方式就不太好(處理)

第二種方式

@Autowired
private  LoadBalancerClient  loadBalancerClient

@GetMapping("/test")
test(){
  ServiceInstance serviceInstance =loadBalancerClient.choose("ORDER"); //eureka服務注冊名稱

  String  url=String.format("http://%s:%s",serviceInstance.getHost(),
  serviceInstance.getPort())+"接口url";

  RestTemplate restTemplate=new RestTemplate();

  String str=restTemplate.getForObject("url",String.class);


}
           

這種方式每次都要擷取服務執行個體也不好。

第三種方式

package com.hx.order.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

@Component
public class RestTemplateConfig {

    @Bean
    @LoadBalanced
    public  RestTemplate  restTemplate(){
        return new RestTemplate();
    }
}
           
@Autowired
private  RestTemplate restTemplate

@GetMapping("/test")
test(){
  
  String str=restTemplate.getForObject("http://ORDER/url",String.class);
  //ORDER  服務名   url 接口名稱

}
           

繼續閱讀