黑马学SpringCloud-Feign


目录:

(1)Feign的远程调用

(2)Feign的自定义配置

(3) Feign的性能优化

(4)Feign的最佳实践

(5)实现Feign的最佳实践


(1)Feign的远程调用

 

声明式请求客户端,早期我们在学习事务的时候,我们需要做事务的开启提交等操作,后来有了Spring,Spring的声明式事务,只需要你在Spring的配置文件里告诉Spring我要对谁加事务,把规则定义好,我们就不用管理,以后的事务都交给Spring来给我们做 ,声明式Http客户端也是如此,你不是要发Http请求吗,不好发怎么办?你把发请求的信息声明出来,剩下的事你不用管了,剩下的由Feign来帮你做

 

例:

第一步:

在order-service的pom.xml 添加一个依赖:

第二步 :

 在order-service的主启动列OrderApplication中添加注解,@EnableFeignClient

开启Fieign的开关

 第三步:编写客户端,做接口声明:UserClient

 第四部

注释掉:

OrderService中原发发起远程调用的请求: 

 换成这个:注入userClient,更改发送请求方法

 重新启动OrderService,在浏览器发送几次请求。

8081、8082都访问到了 

 说明我们不仅实现了远程调用,还实现了负载均衡。

 (2)Feign的自定义配置

演示修改配置文件:

有两种方式:第一种基于配置文件的方式:

在order-service的配置文件中加入:

当没有重启服务发送请求只有sql的日志:

 

 

 重启服务在次发送请求:日志显示了很多

 

 

 第二种方式基于java代码的方式:

 注释:

创建一个日志Bean

 

这个类让他生效需要使用注解,可以加到两个地方:

第一个地方是具体的Client上

 还可以加载启动类上:

重启服务:发送请求

 

 发现除了sql语句之外,还是有其他的日志,请求行,响应行这就是basic模式

 

日志有很多级别:如果你是调试错误建议使用FULL,平常情况下使用Basic、或者Null,因为日志会消耗一定的性能

(3) Feign的性能优化

URLConnection发送远程请求调用的时候是没有连接池的功能的,也就是所每次发送远程调用都需要一个新的连接,执行完业务再去关闭连接,我们知道Http请求,底层都是Http,每一次建立连接都需要3次握手,结束连接还要四次挥手,对性能的损耗是比较大的,因此我们使用连接池的方式,提高性能

Apache HttpClient、OKHttp支持连接池 

 

第一步引入依赖:

 

 第二步:

在配置文件中加入:

 配置好之后怎么去验证一下呢?

验证一下Feign的底层是不是使用的Apache HttpClient的

这个客户端Apache HttpClient是给UserClient用的但是它是一个接口,在OrderService可以直接使用这个接口,为什么可以使用呢?它的底层一定是使用了动态代理,动态的给这个接口创建了对象,当发送请求的时候,就会用到这个客户端

 

 采用debug形式打断点,发现这个客户端是一个而代理对象,所有的代理对象,当函数在执行的时候的底层是InvocationHandler去执行的

 追踪到底层发现是ApacheHttpClient实现的

 

 (4)Feign的最佳实践

我们发现UserClient的客户端和UserController中的方法是类似的,因此可以进行下面的实践 

 

 继承、抽取

 

他们都由缺优点,具体情况而定选择方式

 

(5)实现Feign的最佳实践

实现一下方式二: 

 

 步骤:首先新建一个Module:

引入feign的依赖:

 

接下来赋值代码:把客户端、配置、实体类都复制过去

 

以后任何人都可以直接使用这个不用他们自己写了 :

clients 和config User实体类,都不需要写了,可以删除了,引入上面的Module就行

 

 删完之后会报错,需要在pom文件中引入上面那个新建的Module依赖

需要把保红的更换包的导入的包

这样order-service就不用写feign的客户端相关代码了:

 

 启动报错,是因为找不到创建的对象,因为注解扫描不到

 解决方案:

 在启动类的@EnableFeignClients()加上clients=UserClient.class

 

 重新启动:正常运行

 发送请求进行测试:就实现了最佳实践的抽取方式

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值