springcloud(2)微服务之间的相互调用

1. 使用spring内置的 RestTemplate

调用其他微服务:

@Component
public class ProductClientRibbon {

    @Autowired
    RestTemplate restTemplate;


	public List listProdcuts() {
        return restTemplate.getForObject("http://PRODUCT-DATA-SERVICE/products",List.class);
    }

}

Ribbon 客户端, 通过 restTemplate 访问 http://PRODUCT-DATA-SERVICE/products , 而 product-data-service 既不是域名也不是ip地址,而是 数据服务在 eureka 注册中心的名称。products 被调用的接口名。List.class 只被调用的服务的返回数据是List集合    注意:这里并未添加端口号

springcloud(2)微服务之间的相互调用_第1张图片

 将调用的数据写入进service里,使用

@Service
public class ProductService {
	@Autowired ProductClientRibbon productClientRibbon;
	public List listProducts(){
		return productClientRibbon.listProdcuts();

	}
}

关于RestTemplate 的介绍

我们自己封装的HttpClient,通常都会有一些模板代码,比如建立连接,构造请求头和请求体,然后根据响应,解析响应信息,最后关闭连接。RestTemplate是Spring中对HttpClient的再次封装,简化了发起HTTP请求以及处理响应的过程,抽象层级更高,减少消费者的模板代码,使冗余代码更少。其实仔细想想Spring Boot下的很多XXXTemplate类,它们也提供各种模板方法,只不过抽象的层次更高,隐藏了更多细节而已。顺便提一下,Spring Cloud有一个声明式服务调用Feign,是基于Netflix Feign实现的,整合了Spring Cloud Ribbon与 Spring Cloud Hystrix,并且实现了声明式的Web服务客户端定义方式。

本质上Feign是在RestTemplate的基础上对其再次封装,由它来帮助我们定义和实现依赖服务接口的定义。

相关博客:https://www.cnblogs.com/jeffwongishandsome/archive/2018/05/17/8995562.html

关于RestTemplate 的使用

相关博客:https://www.jb51.net/article/145618.htm

你可能感兴趣的:(springcloud,中间件)