竹笋

首页 » 问答 » 常识 » 声明式HTTP客户端Feign使用入门
TUhjnbcbe - 2023/3/22 20:35:00
北京酒渣鼻医院医师 http://m.39.net/baidianfeng/a_8598818.html

什么是OpenFeign

OpenFeign(以下统一简称为Feign)是Netflix开源的声明式HTTP客户端,集成了Ribbon的负载均衡、轮询算法和RestTemplate的HTTP调用等特性,并对其进行封装,使用者只需要在此基础上,定义一个接口,并在接口上标注一个FeignClient,便可以实现HTTP远程调用,上面的声明式HTTP如何理解,可以理解为

  只需要声明一个接口,Feign就会通过你定义的接口,自动给你构造请求的目标地址并请求。

下面介绍下如何在项目中集成Feign组件,只需要遵循SpringBoot开发三板斧(1、加依赖,2、加注解,3、加配置)即可

环境准备

加依赖openfeign

dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency

加注解

EnableFeignClients

SpringBootApplication

EnableFeignClientspublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.class,args);}}

加配置(由于feign不需要额外在application.yml或者application.properties)中配置,只需要配置好调用微服务的名称和端口即可,下面举个例子,user-center就是我们调用的微服务

server:port:spring:cloud:nacos:discovery:server-addr:localhost:#微服务名称application:name:user

新建OpenFeign接口

FeignClient(name="user")publicinterfaceUserFeignClient{

GetMapping("/users/{id}")UserDtofindById(

PathVariableIntegerid);}

新建Controller层

ServicepublicclassArticleController{

ResourceprivateUserFeignClientuserFeignClient;publicArticleDtofindByUserId(IntegeruserId){......ArticleDtoarticleDto=this.userFeignClient.findById(userId);......returnarticleDto;}}

以上,就是openFeign的基本使用入门了

Feign的日志配置

由于Feign在没有配置的情况下是不会打印任何日志,如果想要看到Feign的日志,需要额外的配置;但是在此之前,我们先了解下Feign的自定义日志级别。

Feign的自定义日志级别

Feign的自定义日志级别可以通过Java代码方式或配置属性方式来实现,下面我们先介绍下代码的实现方式

代码配置方式

编写一个Configuration的类

publicclassUserFeignConfiguration{

BeanpublicLogger.Levellevel(){//  生产上不建议使用FULL,这样会产生大量的日志,影响性能的同时还不好定位问题。//  建议使用BASICreturnLogger.Level.FULL;}}

然后在对应的Feign接口设置Configuration类

FeignClient(name="user",configuration=UserFeignConfiguration.class)publicinterfaceUserFeignClient{

GetMapping("/users/{id}")UserDtofindById(

PathVariableIntegerid);}

最后还要将Feign接口类的全路径设置在yml文件里面

logging:level:  #Feign接口类的全路径  #Feign的日志级别是建立在Feign的接口debug级别之上的

1
查看完整版本: 声明式HTTP客户端Feign使用入门