Feign

130 阅读1分钟

Feign可以把Restemplate进行封装,隐藏请求,简化代码,Feign里带Ribbon负载均衡

  1. todo
  • 导入依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  • 编写接口,不需要实现类,接口上加一个FeignClient注解,标明这是一个feign客户端,用value属性指定服务名称,方法名把提供者的方法名复制过来就行
//声明这是一个feign客户端
@FeignClient(value = "user-service")
public interface UserClient {
    @GetMapping("/user/{id}")
    public User queryById(@PathVariable("id") Long id);
}

日志级别

配置类

  • NONE:不记录任何日志信息,这是默认值。
  • BASIC:仅记录请求的方法,URL以及响应状态码和执行时间
  • HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
  • FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。
@Configuration
public class FeignConfig {
    @Bean
    Logger.Level feignLoggerLevel(){
        /*
        *  NONE: 无日志
            BASIC:基础日志
            HEADERS:基础日志+请求头
            FULL:所有日志
        *
        * */
        return Logger.Level.BASIC;
    }
}

在FeignClient中指定配置类:

//configuration = FeignConfig.class指定配置类
@FeignClient(value = "user-service",configuration = FeignConfig.class)

feign抽取

创建模块,引入依赖,旧模块实体类,feign客户端类,配置类挪进新模块,旧模块引入新模块依赖,旧模块启动类上,用@EnableFeignClients(clients = UserClient.class)关联

@EnableFeignClients(clients = UserClient.class)