关于Feign
为了面试,曾数次准备过相应的专业知识。大家说的都比较官方,晦涩难懂,今天趁这个机会再次记录下自己的感悟。
首先联想一个场景: 在以前我们做的SSM单体架构的项目中。当A系统与B系统要做数据同步时(暂时不讨论webservice接口)。我们会在A系统中写一个接口,然后将地址、参数等告知B系统开发。B系统开发会模拟Http请求,请求A系统接口以获取数据。
Feign本质上,就是实现的这部分的功能(其底层默认使用的是jdk的HTTPUrlConnection做的,当然也支持其他)。只不过是因为应用于微服务架构,存在于spring cloud项目中,多穿了个马甲罢了。
至于说,其整合了ribbon(负载均衡等)和hystrix等,那只不过是其功能的延申,非其立身之本。
使用,当然前提是相应服务已经注册了。此处承接上一章节,默认已经进行注册。
1、依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2、调用端启动类加注解
3、调用端些接口,注解表明被调用的服务的名称及接口路径
/**
* @program: education
* @description:
* @author: 三层饼干儿
* @create: 2020-06-22 00:35
**/
@FeignClient("service-vod")//被调用的服务名称
@Component
public interface VodClient {
//定义调用方法路径 注意路径从哪里开始写的
@DeleteMapping("/eduvod/video/removeAliYunVideo/{id}")
public R removeAliYunVideo(@PathVariable("id") String id);
}
注意:
1)路径
2)@Path Variable后必须指定参数名称
3)这方法可以直接复制要调用的服务端的controller中的方法修改即可。
4、正常处理其他逻辑代码即可。