Spring Cloud Alibaba-Feign的组成和细粒度配置自定义

简介: Spring Cloud Alibaba-Feign的组成和细粒度配置自定义

一、Feign的组成


| 接口               | 作用                                                                     | 默认值                                                                                   |
| ------------------ | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
| Feign.Builder      | Feign的入口                                                              | Feign.Builder                                                                            |
| Client             | Feign底层用什么去请求                                                    | 和Ribbon配合时:LoadBalancerFeignClient<br />不和Ribbon配合时:Feign.Client.Default |
| Contract           | 契约,注解支持                                                           | SpringMVC Contract                                                                       |
| Encoder            | 解码器,用于将独享转换成HTTP请求消息体                                   | SpringEncoder                                                                            |
复制代码

| Decoder            | 编码器,将相应消息体转成对象                                             | ResponseEntityDecoder                                                                    | | Logger             | 日志管理器                                                               | Slf4jLogger                                                                              | | RequestInterceptor | 用于为每个请求添加通用逻辑(拦截器,例子:比如想给每个请求都带上heared) | 无                                                                                       |

Feign.Client.Default 利用的是我们默认的HttpURLConnection,他是没有连接池的。也没有资源管理这个概念,性能不是很好,

image.png



二、细粒度配置自定义


1、代码方式-指定日志级别


feign默认是不打印任何日志的,但是我们希望打印一些日志信息。比如调用的时间。

Feign设置方式就不同的,他有四个级别如下:


级别 打印日志内容
NONE(默认值) 不记录任何日志
BASIC 仅记录请求方法、URL、响应状态代码以及执行时间
HEADERS 记录BASIC级别的基础上,记录请求和响应的header
FULL 记录请求和响应的header、body和元数据

1.1 指定springboot日志


Feign日志是基于Spring boot的日志所以先设置SpringBoot日志:


logging:
  level:
    com.msb: debug
复制代码


1.2 创建配置类


BASIC使用于生产环境 FULL适用于开发环境

创建配置类UserFeignConfiguration ,注意这里并没有增加@Configuration


package com.msb.order.configuration;
import feign.Logger;
import org.springframework.context.annotation.Bean;
//这里不能增加@Configuration,如果添加了就会变为全局配置文件。
public class StockFeignConfiguration {
    @Bean
    public Logger.Level level(){
        return Logger.Level.FULL;
    }
}
复制代码


更改请求feign的配置文件。


1.3 将配置类引入


image.png


2、属性方式-指定日志级别


feign.client.config.<feignName>.loggerLevel:full


logging:
  level:
    com.msb: debug
feign:
  client:
    config:
      msb-stock:
        loggerLevel: full



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
19小时前
|
安全 Java Docker
|
1天前
|
Java 开发者 微服务
Spring Cloud原理详解
【5月更文挑战第4天】Spring Cloud是Spring生态系统中的微服务框架,包含配置管理、服务发现、断路器、API网关等工具,简化分布式系统开发。核心组件如Eureka(服务发现)、Config Server(配置中心)、Ribbon(负载均衡)、Hystrix(断路器)、Zuul(API网关)等。本文讨论了Spring Cloud的基本概念、核心组件、常见问题及解决策略,并提供代码示例,帮助开发者更好地理解和实践微服务架构。此外,还涵盖了服务通信方式、安全性、性能优化、自动化部署、服务网格和无服务器架构的融合等话题,揭示了微服务架构的未来趋势。
13 6
|
3天前
|
Java 微服务 Spring
Spring Boot中获取配置参数的几种方法
Spring Boot中获取配置参数的几种方法
16 2
|
5天前
|
JSON Java Apache
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
|
5天前
|
消息中间件 安全 Java
在Spring Bean中,如何通过Java配置类定义Bean?
【4月更文挑战第30天】在Spring Bean中,如何通过Java配置类定义Bean?
14 1
|
5天前
|
Java 测试技术 开发者
【亮剑】如何通过自定义注解来实现 Spring AOP,以便更加灵活地控制方法的拦截和增强?
【4月更文挑战第30天】通过自定义注解实现Spring AOP,可以更灵活地控制方法拦截和增强。首先定义自定义注解,如`@MyCustomAnnotation`,然后创建切面类`MyCustomAspect`,使用`@Pointcut`和`@Before/@After`定义切点及通知。配置AOP代理,添加`@EnableAspectJAutoProxy`到配置类。最后,在需拦截的方法上应用自定义注解。遵循保持注解职责单一、选择合适保留策略等最佳实践,提高代码可重用性和可维护性。记得测试AOP逻辑。
|
5天前
|
负载均衡 Java 开发者
Spring Cloud:一文读懂其原理与架构
Spring Cloud 是一套微服务解决方案,它整合了Netflix公司的多个开源框架,简化了分布式系统开发。Spring Cloud 提供了服务注册与发现、配置中心、消息总线、负载均衡、熔断机制等工具,让开发者可以快速地构建一些常见的微服务架构。
|
7天前
|
Java 开发者 Spring
Spring Boot中的资源文件属性配置
【4月更文挑战第28天】在Spring Boot应用程序中,配置文件是管理应用程序行为的重要组成部分。资源文件属性配置允许开发者在不重新编译代码的情况下,对应用程序进行灵活地配置和调整。本篇博客将介绍Spring Boot中资源文件属性配置的基本概念,并通过实际示例展示如何利用这一功能。
17 1
|
7天前
|
消息中间件 Java RocketMQ
Spring Cloud RocketMQ:构建可靠消息驱动的微服务架构
【4月更文挑战第28天】消息队列在微服务架构中扮演着至关重要的角色,能够实现服务之间的解耦、异步通信以及数据分发。Spring Cloud RocketMQ作为Apache RocketMQ的Spring Cloud集成,为微服务架构提供了可靠的消息传输机制。
20 1
|
11天前
|
Java API Nacos
第十二章 Spring Cloud Alibaba Sentinel
第十二章 Spring Cloud Alibaba Sentinel
20 0