当前位置:网站首页>[Cloud native] Introduction and use of Feign of microservices
[Cloud native] Introduction and use of Feign of microservices
2022-07-31 08:28:00 【m0_67392931】
前言:
最近在学习微服务相关的知识,看了黑马的相关课程,将关于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
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论??
最后再次给大家安利一波牛客,点击刷题神器
注册牛客,快来和博主一起刷题吧嘿嘿嘿?? 再次感谢各位小伙伴儿们的支持??
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在.深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小.自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前.因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担.添加下方名片,即可获取全套学习资料哦
边栏推荐
- 实用生物信息学2:多组学数据整合和挖掘
- Read Elephant Swap in one article, why does it bring such a high premium to ePLATO?
- [Interview: Concurrency 38: Multithreading: Thread Pool] Basic concepts of the ThreadPoolExecutor class
- XSS详解
- Super detailed mysql database installation guide
- MySQL 5.7详细下载安装配置教程
- 功能强大的国产Api管理工具
- 全国中职网络安全B模块之国赛题远程代码执行渗透测试 PHPstudy的后门漏洞分析
- 哪些字符串会被FastJson解析为null呢
- 蚂蚁核心科技产品亮相数字中国建设峰会 持续助力企业数字化转型
猜你喜欢
随机推荐
Tasks and task switching
MySQL detailed explanation
Fund investment advisory business
Read Elephant Swap in one article, why does it bring such a high premium to ePLATO?
MySQL中InnoDB的多版本并发控制(MVCC)的实现
ZCMU--1862: zbj的狼人杀
实用生物信息学2:多组学数据整合和挖掘
[Interview: Concurrency 38: Multithreading: Thread Pool] Basic concepts of the ThreadPoolExecutor class
MySQL 5.7升级到8.0详细过程
Shellshock
TypeError The view function did not return a valid response. The function either returned None 的解决
Ceph单节点部署
【云原生与5G】微服务加持5G核心网
《c语言小游戏》入门级三子棋游戏(机器人加强版)
《opencv学习笔记》-- 仿射变换
NK - RTU980 burning bare-metal program
LED flashing on CY7C68013A
进程调度的基本过程
MySQL 5.7 安装教程(全步骤、保姆级教程)
sort函数(快速排列)的使用方法