当前位置:网站首页>【云原生】微服务之Feign的介绍与使用
【云原生】微服务之Feign的介绍与使用
2022-07-29 12:19:00 【bluepad】
前言:
最近在学习微服务相关的知识,看了黑马的相关课程,将关于Feign的知识又总结了一些,希望能帮到各位小伙儿们以及加深下自己的印象??
如果文章有什么需要改进的地方还请大佬多多指教??
小威先感谢大家的支持了??
??个人主页:
??个人简介:大家好,我是小威,一个想要与大家共同进步的男人???
目前状况??:目前大二,在一家满意的公司实习?????如果大佬在准备面试,可以使用我找实习前用的刷题神器哦刷题神器点这里哟
??欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬??
牛客部分使用反馈,个人感觉还不错,帮我找到了心仪的公司,希望各位伙伴儿们通过它也能提高不少???
以下正文开始
文章目录
??Feign的简介
Feign 是一个声明式的伪RPC的REST客户端,它用了基于接口的注解方式,很方便的客户端配置,Spring Cloud 给 Feign 添加了支持Spring MVC注解,并整合Ribbon及Eureka进行支持负载均衡。
Feign 是个 HTTP 请求的轻量级客户端框架。通过接口和注解的式发起 HTTP 请求调,面向接口编程,并不是像 Java 中通过封装 HTTP 请求报的式直接调。
服务消费拿到服务提供的接,然后像调本地接法样去调,实际发出的是远程的请求。让我们更加便捷和优雅的去调基于 HTTP 的 API,被泛应在 Spring Cloud 的解决案中。
??Feign的优点
之前我们利用RestTemplate发起远程调用的代码:
String url = "http://userservice/user/" + order.getUserld();
User user = restTemplate.getForObject(url, User.class);
上面的存在的问题有代码:
可读性差,编程体验不统一;
参数复杂URL难以维护
Feign是一个声明式的http客户端,官方地址:Feign官方链接
其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。
??Feign如何使用
还是以我们之前的项目为例
在order-service服务的pom文件中引入feign依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
在order-service的启动类添加注解开启Feign的功能:
@EnableFeignClients
@MapperScan("cn.itcast.order,mapper")
@SpringBootApplication
public class OrderApplication
public static void main(String[] args) [
SpringApplication.run(OrderApplication.class,args)
在order-service中新建一个接口,内容如下:
package cn.itcast.order.client;?
import cn.itcast.order.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
[email protected]("userservice")
public interface UserClient {
@GetMapping("/user/{id}")
User findById(@PathVariable("id") Long id);
}
这个客户端主要是基于SpringMVC的注解来声明远程调用的信息,比如:
- 服务名称:userservice
- 请求方式:GET
- 请求路径:/user/{id}
- 请求参数:Long id
- 返回值类型:User
这样,Feign就可以帮助我们发送http请求,无需自己使用RestTemplate来发送了。
我们修改order-service中的OrderService类中的queryOrderById方法,使用Feign客户端代替RestTemplate:
@Autowired
private UserClient userClient;
public Order query0rderById(Long orderId)
//1.查询订单
Order order = orderMapper.findById(orderId);
//2. 利用Feign发起http请求 查询用户
Useruser = userClient.findById(order.getUserId());
//3.封装user到0rder
order.setUser(user);
// 4.返回
return order;
??Feign的使用总结
使用Feign的步骤:
第①步 引入依赖
第②步 添加@EnableFeignClients注解
第③步 编写FeignClient接口
第④步 使用FeignClient中定义的方法代替RestTemplate
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论??
最后再次给大家安利一波牛客,点击刷题神器
注册牛客,快来和博主一起刷题吧嘿嘿嘿?? 再次感谢各位小伙伴儿们的支持??
边栏推荐
- DAY 25 daily SQL clock 】 【 丨 different sex daily score a total difficulty moderate 】 【
- JVM内存模型如何分配的?
- DAY 24 daily SQL clock 】 【 丨 weather types in different countries [difficult simple]
- Based article 】 【 learn with Rust | Rust function and process control, rounding
- 我和 TiDB 的故事 | 缘份在,那就终是能相遇的
- 测试环境要多少,从现实需求说起
- XSS漏洞分析
- SQL clock 】 【 daily DAY 23 丨 reporting to the CEO job difficulty moderate 】 【
- 2.3 Insertion sort
- 【每日SQL打卡】DAY 23丨学生们参加各科测试的次数【难度简单】
猜你喜欢
MarkDown Advanced Syntax Manual
第十章 发现和记录 REST API
【一起学Rust | 基础篇】Rust基础——变量和数据类型
【Unity3D】角色控制器(CharacterController)
Codeforces Round #797 (Div. 3)个人题解
Bookkeeping APP: Xiaoha Bookkeeping 3 - Production of Login Page
国内首秀元宇宙Live House圆满收官,百事可乐虚拟偶像真的好会!!
微信H5网页分享只显示链接处理办法
文件上传漏洞
金仓数据库KingbaseES客户端编程接口指南-JDBC(2. 概述)
随机推荐
策略模式替代 if else
【每日SQL打卡】DAY 27丨每次访问的交易次数【难度困难-提前放出来】
【一起学Rust | 基础篇】rust函数与流程控制详解
【多线程】——synchronized关键字
2.3 Insertion sort
XSS漏洞分析
WordPress 常规设置
最简单的共享列表服务器KissLists
第二章总结
企业微信客户朋友圈一天可以发多少条?都有哪些限制?如何突破朋友圈可展示人数限制?
DAY 26 daily SQL clock 】 【 丨 advertisement effect difficult simple 】 【
金仓数据库KingbaseES客户端编程接口指南-JDBC(3. JDBC 建立/关闭连接)
2022-07-29 Daily: The latest major progress of AlphaFold: complete almost all known protein structure predictions of more than 200 million, fully open
【每日SQL打卡】DAY 23丨学生们参加各科测试的次数【难度简单】
3D激光SLAM:LeGO-LOAM论文解读---硬件系统部分
金仓数据库KingbaseES客户端编程接口指南-ODBC(9. 疑难解答)
【实用工具】Image Assistant下载指定页面的所有图片
【第三次自考】——总结
Codeforces Round # 797 (Div. 3) personal answer key
第十章 发现和记录 REST API