SpringCloud微服务组件-服务调用feign
一.定义
feign是声明式的http工具,可以实现rest web service调用。使用feign可以使得微服务表用变的更加简洁明了。就相当于一个controller调用service的方法那样简单。feign的底层也是使用的ribbon做的负载均衡,springcloud都帮我们把这些组件进行了封装。
二.使用配置
1.导入pom依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
2.在调用目标接口上配置feign
//MyServiceList.SERVICE_USER 目标接口微服务的服务名 @FeignClient(value = MyServiceList.SERVICE_USER) public interface UserControllerApi { ... }
3.在启动类上开启feign支持
@EnableFeignClients({ "com.imooc"}) // 开启feign支持 public class Application { ... }
4.由于使用了feign,所以现在的服务调用,只需要在注入api后直接调用该服务的方法接口
5.注意:feign不支持多个body,所以在运行微服务报错的时候,需要修改参数,比如如下,需要在BindingResult之前添加一个注释即可。
public GraceJSONResult updateUserInfo( @RequestBody @Valid UpdateUserInfoBO updateUserInfoBO, @RequestParam(required = false) BindingResult result);
三.拓展知识
3.1 日志调试
feign本身就是基于http的调用,那么对于http调用有时候出现一些问题需要排查,那么我们是可以开启日志的,feign的日志很详细,开启后便于观察。
在yml中添加配置:
logging: level: com.imooc.api.controller.user.UserControllerApi: debug # root: debug # 配置feign feign: client: config: # 配置服务提供者的名称 SERVICE-USER: loggerLevel: FULL