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
经验分享 程序员 微信小程序 职场和发展