使用场景:SpringCloud的核心宗旨是 “分开部署,独立运行”。
如何在多个服务之间进行通信,数据交流?
常用技术:
Restemplate
Feign(更常用)
在远程调用技术为什么使用Restemplate少?
String url="http://path1/path2/"+具体参数;
//通过restemplate将这个请求转发的User接口上,并且将得到的Json数据封装成AJAX
restTemplate.getForObject(url, 类名.class);
这是一串Restemplate代码,存在的弊端:
1. 通过url路径作为请求的资源——硬编码,可读性差
2. 当url参数变复杂时,不方便维护
Feign的使用步骤
在资源端使用Fegin
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
启动类上加入注解@EnableFeignClients
将调用的接口暴露
2. Feign的调用端
使用时增加注解
细节方面
1. FeignClient只是一个接口,为什么可以调用方法当作一个类使用。因为在@Autowrited使用动态代理的方法实现了这个接口
2. 在使用FeignClient的方法的时候,Feign会根据@FeignClient指定的服务名,GetMapping指定的路由名,到对应的服务中,对应的路由中实现对应的功能。