Feign的灵感来源于Retrofit、JAXRS-2.0和WebSocket,其的目的是简化java的http客户端的编写,旨在通过最少的代码和资源来实现和http APi的连接。本文旨在讲解怎么使用,教程如下:
一.引入依赖
在pom文件中引入如下依赖
<!--feign start-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form</artifactId>
<version>${feign.form.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form-spring</artifactId>
<version>${feign.form.version}</version>
</dependency>
<!--feign end-->
二.启动类开启配置
在启动类上加 上注解:@EnableFeignClients,以开启扫描哪些申明为FeignClients的客户端。
三.FeignClients接口编写
@FeignClient(
//服务名
name = "demo-service",
//服务地址
url = "http://localhost:8083/demo-service"
)
public interface FeingnTest {
//对应的服务里的接口地址,及请求方式
@RequestMapping(value = "/hello/feignTest", method = RequestMethod.POST)
@ResponseBody
String feignString(@RequestParam(value="a") String a);
/**
* 容错处理类,当调用失败时,简单返回空字符串
*/
@Component
public class DefaultFallback implements FeingnTest {
@Override
public String feignString(@RequestParam(value="ah") String a){
return "";
}
}
}
四.业务代码调用
业务代码里使用就和平常代码调用基本一致,先将FeignClients接口注入进来,然后在业务逻辑里直接调用相关的方法即可。具体如下:
//注入FeignClients接口
@Autowired
private FeingnTest feingnTest;
/**
*feign测试
* @param String
*/
@ApiOperation(value="feign测试",notes="feign测试")
@RequestMapping(value="/feignTest.json", method= RequestMethod.GET)
@ResponseBody
public String feignTest(String a){
String tteString =feingnTest.feignString(a);
return tteString;
}
使用方法基本如上,还请不吝赐教。想更深入了解的可参考如下文章:
深入理解Feign之源码解析