简介:Feign是一个声明式的Web服务客户端,它基于Netflix的Ribbon库和Spring Cloud的服务功能,可以自动地将请求转发到多个微服务之间,并提供负载均衡、容错和缓存等功能,简而言之,就是可以实现多个微服务之间进行可靠、高效通信。
一、需要有服务提供方(例如:微服务1中某个方法需要向其他微服务提供接口)
@GetMapping("/lkm/{code}/{name}")
public List<实体> List(@PathVariable(required = false) String code
, @PathVariable(required = false) String name{
List<实体> list= xxService.getList(code, name);
return list;
}
二、Feign 微服务搭建
1、在POM文件引入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.5</version>
</dependency>
2、分别创建两个文件:
首先,需要创建xxxFeign文件和 xxxProvider文件,该文件最好在两个目录下,例如可以将xxxFeign放在feign目录里,将xxxProvider放在api里。
@Component
@FeignClient(name = "微服务1的项目名", url="localhost:微服务1端口号")
public interface xxxFeign extends xxxProvider {
}
这里的Object直接对应微服务1的实体,省去再创建实体。
public interface xxxProvider {
@GetMapping("/lkm/{code}/{name}")
List<Object> dicItemTree(@PathVariable(required = false) String code
, @PathVariable(required = false) String name;
}
注意:feign的参数不能为空。
三、消费者微服务2的调用
1、在POM文件引入依赖:
<dependency>
<groupId>com.xxx</groupId>
<artifactId>Feign微服务名称</artifactId>
<version>版本</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.5</version>
</dependency>
2、启动类配置
启动类需要引用该注解
@EnableFeignClients()
3、调用方法具体实现
通过@Resource 在controller直接引用你所需xxxFeign ;
@Resource
private xxxFeign xxxFeign;
@GetMapping("/mm")
public List<Object> xxxTree(@PathVariable(required = false) String code
, @PathVariable(required = false) String name;{
return xxxFeign.getXXX(code,name);
}