欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringCloud学习笔记-应用间通信-RestTemplate

程序员文章站 2022-03-04 20:18:34
...

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 接口名称

}

 

相关标签: RestTemplate