【黑马】Feign学习笔记

文章介绍了Feign作为HTTP客户端的优势,如何替代RestTemplate实现负载均衡,以及Feign的声明式使用方式。内容包括自定义配置如日志级别,性能优化如连接池设置,并提出了Feign的最佳实践,强调了避免服务和客户端接口紧耦合的重要性。同时,文章解决了FeignClient在Spring容器中找不到的问题,建议通过调整扫描包范围来解决。

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

Http客户端 Feign

一、RestTemplate方式调用存在的问题

在这里插入图片描述

二、Feign介绍

在这里插入图片描述

三、Feign的定义和使用

Feign已经集成了ribbon,可以自动实现负载均衡
在这里插入图片描述

(一)步骤

在这里插入图片描述
在这里插入图片描述
声明完成之后,拿着接口调用方法即可

看到starter:知道属于自动装配

(二)使用方式

在这里插入图片描述
在这里插入图片描述

1.对于有很复杂参数的请求怎么办?

因为是基于注解的参数注入当时,所以多加几个注解即可

(三)总结

在这里插入图片描述

四、自定义Feign的配置

(一)、Feign允许运行自定义配置来覆盖默认配置

在这里插入图片描述
一般我们需要配置的就是日志级别

(二)演示修改日志级别

两种方式:基于配置文件的方式、基于Java代码的方式

1.配置文件方式

在这里插入图片描述

2.Java代码的方式,先声明一个bean

先写个配置类
在这里插入图片描述
①是在启动类上,②是在某一个具体的服务上

(三)日志配置总结

在这里插入图片描述
一般用basic或none,如果是找bug的话,用full

五、Feign的性能优化

Feign是一个声明式客户端,只是把声明变成http请求,最终发http请求时,还是会用到一些别的客户端,默认是用URLConnection

在这里插入图片描述在这里插入图片描述

(一)优化步骤——连接池配置

在这里插入图片描述

(二)具体实现

1.引入依赖
在这里插入图片描述
2.开启httpclient
在这里插入图片描述

(三)总结

在这里插入图片描述

六、Feign的最佳实践

在这里插入图片描述
在这里插入图片描述

这种方式也有一定问题,不推荐在服务和客户端之间共享接口,会造成紧耦合,并且在MVC中不起作用(方法参数是无法继承下来的),需要自己再写一遍。但是这种规范(契约)在企业用的还是比较多的

在这里插入图片描述
会造成引入用不到的方法、

根据对耦合度和契约的需求来选择两种方式

总结

在这里插入图片描述

七、实现Feign最佳实践【抽取FeignClient】

在这里插入图片描述

在这里插入图片描述

userClient

在这里插入图片描述

默认配置

在这里插入图片描述

user实体类

在这里插入图片描述

此时Feign-api就准备好了,以后可以直接使用这一套api,在相应工程下的pom文件中引入feign的统一api即可,实现了客户端代码的抽取

在这里插入图片描述

存在的问题:找不到FeignClient了

编译没报错,说明有这个类,没有注入成功,说明这个类没有创建对象,也就是说在spring的容器中找不到它,报错信息如下:
在这里插入图片描述【FeignClient所在的包是feign的包,现在默认扫描的包是order包,导致扫描不到】

为什么这个接口没有对应的对象?因为之前有对象,是有@FeignClient这个注解,spring扫描到了这个注解,就会给这个接口创建对象。不能将扫描包的范围扩大,解决方式如下:

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值