OpenFeign服务接口调用学习心得

本文介绍了OpenFeign的用途,它是声明式的web服务客户端,简化了微服务间的接口调用。重点讲述了如何使用OpenFeign,包括@FeignClient的使用方式和动态代理的原理。同时,讨论了Feign与OpenFeign的区别,OpenFeign的超时控制以及如何在YML文件中进行配置。最后,提到了OpenFeign的日志打印功能及其日志级别的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.是什么:Feign是一个声明式的web服务客户端,让编写web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可

 

2.怎么用(重点):微服务调用接口+@FeignClient    主启动类:@EnableFeignClients

我原先很不理解实现类是怎么创建出来的,接口上标注Component是干啥的,一般不标注在类上吗?然后底层通过dom4j+反射(默认调用空参构造函数创建对象放入IOC容器中),根据自己的测试和百度,这个@FeignClient通过动态代理的方式把实现类创建出来,并把生成的代理对象放入IOC容器中,所以这里@Component不写也可以,亲测有效!

而且只要你@FeignClient中value中的微服务提供的接口(也就是@GetMapping)和上图中的@GetMapping一样,即可调用,Feign自带负载均衡配置项(根据查看maven导入的openfeign jar包可以看出,下面有个子jar包是ribbon),@FeignClient有一步就是生成负载均衡的代理类,也就是接口的实现类。底层再根据所产生的代理类生成代理对象放入IOC容器中。

 

3.Feign和OpenFeign两者区别

 

4.OpenFeign超时控制:OpenFeign默认等待一秒钟,超过后报错

  YML文件里需要开启OpenFeign客户端超时控制:

ribbon:
  ReadTimeout: 5000
  ConnectTimeout: 5000

ConnectTimeout 

指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。 

ReadTimeout

指的是建立连接后从服务器读取到可用资源所用的时间。

在我们使用需要设置这两项参数的服务或程序时,应该对两项参数一起设置。 一般而言两项参数的数值可以设置成一样的,ConnectTimeout可以相对比较短,这是源于我们的网络状况一般较为稳定,连接时很少出现问题。

 

5.OpenFeign日志打印功能:

1)是什么:

 

2)日志级别:

 

3)配置日志bean:

package com.atguigu.springcloud.config;

import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FeignConfig {

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

 

4)YML文件里需要开启日志的Feign客户端:

logging:
  level:
    com.atguigu.springcloud.service.PaymentFeignService: debug

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值