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
