@EnableFeignClients的由来

news/2024/11/28 23:33:48/

1.注解@EnableFeignClients:扫描和注册feign客户端bean定义:

        在Spring cloud应用中,当我们要使用feign客户端时,使用注解@EnableFeignClients启用feign客户端;注解@EnableFeignClients告诉框架扫描所有使用注解@FeignClient定义的feign客户端。它又通过注解@Import导入了类FeignClientsRegistrarfeign客户端注册器)。

当我们使用注解@EnableFeignClients 时,相当于启用了feign客户端定义的扫描和注册机制,从而可以发现开发人员通过注解@FeignClient定义的feign客户端,并最终作为bean定义注册到容器中。而通过@Autowired自动装配注解,这些feign客户端会以ReflectiveFeign$FeignInvocationHandler动态代理的形式被注入到使用方。该feign客户端包含了对每个接口方法的处理器MethodHandler,接口缺省方法对应DefaultMethodHandler,服务功能端点方法对应SynchronousMethodHandler

2.那什么是feign呢?

Feign是springcloud里面的一个功能组件,那么它是实现一个什么功能呢?
首先我们可以先从字面意思上去理解一下它,Feign,英文翻译过来就是伪装的意思,实际上它的功能也是和伪装相关的,在我们之前在客户端配置的时候,不知道大家还记不记得我们是用RestTemplate去配置的,但是配置这个RestTemplate的时候,我们是调用了它里面的一个方法,并且把url,id还有class传进去的,但是这样做是不是太麻烦了,而且还会暴露地址,所以我们就可以使用Feign这个功能来帮助我们,Feign是可以对我们的RestTemplate里面的url地址进行伪装。

3.那什么又是RestTemplate呢?

发送 http 请求,估计很多人用过 httpclient 和 okhttp,确实挺好用的,而 Spring web 中的 RestTemplate 和这俩的功能类似,也是用来发送 http 请求的,不过用法上面比前面的 2 位要容易很多。

        spring 框架提供的 RestTemplate 类可用于在应用中调用 rest 服务,它简化了与 http 服务的通信方式,统一了 RESTful 的标准,封装了 http 链接, 我们只需要传入 url 及返回值类型即可。相较于之前常用的 HttpClient,RestTemplate 是一种更优雅的调用 RESTful 服务的方式。

        在 Spring 应用程序中访问第三方 REST 服务与使用 Spring RestTemplate 类有关。RestTemplate 类的设计原则与许多其他 Spring 模板类(例如 JdbcTemplate、JmsTemplate)相同,为执行复杂任务提供了一种具有默认行为的简化方法。

        RestTemplate 默认依赖 JDK 提供 http 连接的能力(HttpURLConnection),如果有需要的话也可以通过 setRequestFactory 方法替换为例如 Apache HttpComponents、Netty 或 OkHttp 等其它 HTTP library。

        考虑到 RestTemplate 类是为调用 REST 服务而设计的,因此它的主要方法与 REST 的基础紧密相连就不足为奇了,后者是 HTTP 协议的方法:HEAD、GET、POST、PUT、DELETE 和 OPTIONS。例如,RestTemplate 类具有 headForHeaders()、getForObject()、postForObject()、put()和 delete()等方法。

4. RESTful 服务又是怎么出现的呢?

REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。

 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。" 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力, 更好地使用现有Web标准中的一些准则和约束。虽然REST本身受Web技术的影响很深, 但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。 所以我们这里描述的REST也是通过HTTP实现的REST。

要理解RESTful架构,需要理解Representational State Transfer这个词组到底是什么意思,它的每一个词都有些什么涵义。

下面我们结合REST原则,围绕资源展开讨论,从资源的定义、获取、表述、关联、状态变迁等角度,列举一些关键概念并加以解释。

  • 资源与URI
  • 统一资源接口
  • 资源的表述
  • 资源的链接
  • 状态的转移

http://www.ppmy.cn/news/62986.html

相关文章

家里小孩要去学网络安全,网络安全行业前景到底怎么样?

最近接待了很多学生家长来咨询网络安全学习的问题。 家长们最主要关注三点:什么是网络安全?网络安全行业前景好吗?工资能拿多少?哪些专业什么学历可以学习网络安全? 那么盾叔就来综合解答一下。 什么是网络安全&…

Windows搭建C++开发环境(visual studio 2022)

开发环境的搭建 开发工具:vscode、visual studio 2022、visual studio 2019、2015、2010 .. 安装步骤(以Windows下visual studio2022为例): 打开官网地址 Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com…

服务远程调用、ribbon负载均衡、nacos注册中心

1.服务拆分和远程调用 任何分布式架构都离不开服务的拆分,微服务也是一样。 1.1.服务拆分原则 这里我总结了微服务拆分时的几个原则: 不同微服务,不要重复开发相同业务微服务数据独立,不要访问其它微服务的数据库微服务可以将…

可视化绘图技巧100篇进阶篇(二)-配对箱线图

目录 前言 绘图工具 R语言 绘制配对样品箱线图 绘制多组配对箱线图

数据链路层的重点协议

数据链路层的重点协议 🔎认识以太网以太网帧格式 🔎认识MTU🔎结尾 🔎认识以太网 “以太网” 不是一种具体的网络, 而是一种技术标准. 既包含了数据链路层的内容, 也包含了一些物理层的内容(例如规定了网络拓扑结构, 访问控制方式…

本地使用IIS快速搭建一个属于自己的网站,并发布公网访问「无需购买云服务器」

文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 1.前言 在网上各种教程和介绍中,搭建网页都会借助各种软件的帮助&#xf…

记录-Symbol学习笔记

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 Symbol是JavaScript中的原始数据类型之一,它表示一个唯一的、不可变的值,通常用作对象属性的键值。由于Symbol值是唯一的,因此可以防止对象属性被意外地覆盖或修改。…

PBDB Data Service:RIS format

RIS format 描述概要 描述 本文详细介绍RIS格式。 概要 RIS(Research Information Systems,科研信息系统)格式是通过以后缀 .ris 结束URL路径来选择的。这种格式最初是由Research Information Systems 定义的,后来成为处理书目…