什么是openFeign
官网:Feign是一个声明式 Web 服务客户端。它使编写 Web 服务客户端变得更容易。要使用 Feign 创建一个接口并对其进行注释。它具有可插入的注释支持,包括 Feign 注释和 JAX-RS 注释。Feign 还支持可插拔的编码器和解码器。Spring Cloud 添加了对 Spring MVC 注解的支持,并支持使用HttpMessageConverters
Spring Web 中默认使用的注解。Spring Cloud 集成了 Eureka、Spring Cloud CircuitBreaker 和 Spring Cloud LoadBalancer,在使用 Feign 时提供负载均衡的 http 客户端。
OpenFeign是一种声明式服务调用组件,支持 SpringMVC注解(@RequestMapping、@RequestBody 、@ResponseBody、@PathVariable、@RequestParam 等) ,它能让 REST 调用更加简单,可以快速上手,完成微服务间调用。
OpenFeign参数传递特点
-
参数一定要绑定参数名。
-
方法中的参数类型与参数的个数一定要和被调用的微服务方法中的参数类型和个数保持一致
-
接口编写时,方法一般与被调用的微服务方法一致。
-
接口编写时,方法一般与被调用的微服务方法一致,若被调用的微服务方法中使用了SpringMVC注解,在接口中编写的方法也一定要加上SpringMVC注解
-
接口中编写的方法返回值一定要与被调用的微服务方法中返回值保持一致。
整合openFeign
1.1 添加依赖
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.0.3</version>
</dependency>
1.2 启动类增加注解
开启OpenFeign并指定扫描包,对带有 @FeignClient注解
的接口进行扫描,并将它们装配到 Ioc容器中。
@EnableFeignClients
1.3 服务提供方
提供一个hello接口供调用
@RestController
@RequestMapping("test")
public class TestController {
@RequestMapping("hello")
public String hello(@RequestParam("name") String name) {
return "hello," + name;
}
}
自己调用
1.4 服务调用方
在另一方,编写一个接口,来调用提供方。
@RestController
@RequestMapping("test")
public class TestController {
@Autowired
private TestFeign testFeign;
@RequestMapping("hello")
public String hello(@RequestParam("name") String name) {
return testFeign.helloFeignClient(name);
}
}
@FeignClient(name = "articleWeb", path = "/articleWeb")
public interface TestFeign {
@GetMapping("test/hello")
String helloFeignClient(@RequestParam("name")String name);
}
测试
注意:提供方和调用方的参数要保持统一。
至此,就完成了服务之间的调用,OpenFeign声明式服务调用,是不是更简单便捷。