什么是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
加注解
EnableFeignClientsSpringBootApplicationEnableFeignClientspublicclassApplication{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级别之上的