SpringCloud学习之Feign

175 阅读1分钟

Feign

Netflix开源的声明书HTTP客户端

Feign组件

image-20210614180953699

Feign.Builder : 构建每一个FeignClient

Client :需要注意的是 feign.Client.default未使用连接池, 而LoadBalancerFeignClient在默认情况下可以看做是具有负载均衡功能的FeignClient

自定义Feign日志级别

image-20210614183749292

Java配置类的方式指定

通过注解在FeignClient的@FeignClient的configuration属性中所配置Logger.Level类进行指定

@FeignClient(name = "userCenter", path = "user", configuration = UserCenterFeignClientConfig.class)
public interface UserCenterFeignClient {
    ...
}

UserCenterFeignClientConfig.java

public class UserCenterFeignClientConfig {

    @Bean
    public Logger.Level level() {
        return Logger.Level.FULL;
    }
}

配置属性的方式进行指定

feign.client.config.userCenter.logger-level = full

Feign的全局配置

  • Java代码方式
  • 配置属性方式

Java代码方式

@EnableFeignClients(defaultConfiguration = CustomDefaultFeignClientConfig.class)
public class CustomDefaultFeignClientConfig {
    @Bean
    public Logger.Level level() {
        return Logger.Level.FULL;
    }
}

配置属性方式

feign.client.config.default.logger-level = full

支持的配置项

Java代码方式支持的

image-20210614193017702

配置属性方式支持的

image-20210614193343242

Ribbon配置与Feign配置

Feign性能优化

  • 连接池
  • 日志级别

连接池

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>
feign.httpclient.enabled=true

Feign常见问题总结