Feign原理_feign源码

Feign原理_feign源码feign是一种http客户端,可以让你通过简单地注解的方式,调用其他的http服务。feign提供的注解是@FeignClient,一直很好奇feign是怎么生效的,今天跟着代码一块看一下。要想使用feign的话,首先要在项目中打上@EnableFeignClients注解,从代码中可以看到,@EnableFeignClients通过@Import注解引入了Fei…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

       feign是一种http客户端,可以让你通过简单地注解的方式,调用其他的http服务。feign提供的注解是@FeignClient,一直很好奇feign是怎么生效的,今天跟着代码一块看一下。

       要想使用feign的话,首先要在项目中打上@EnableFeignClients注解,从代码中可以看到,@EnableFeignClients通过@Import注解引入了FeignClientsRegistrar类,FeignClientsRegistrar实现了三个类,ImportBeanDefinitionRegistrar、ResourceLoaderAware、EnvironmentAware,其中ImportBeanDefinitionRegistrar的注释是这样的:在处理Configuration类的时候,那些需要注册额外的bean定义的类型来实现这个接口。在FeignClientsRegistrar的实现中,registerBeanDefinitions干了两件事,第一个是通过获取EnableFeignClients的配置参数,来做feign全局的默认配置,第二个是扫描所有标注了@FeignClient注解的接口的配置项和参数,然后为每个接口注册一个FeignClientFactoryBean的实例到容器中。

       我们来看FeignClientFactoryBean的定义,它实现了三个接口,FactoryBean<Object>, InitializingBean, ApplicationContextAware,这里我们主要关注FactoryBean接口,它的注释是,在一个BeanFactory内,作为单个对象的工厂的类需要实现这个接口。如果一个bean实现了这个接口,它会作为工厂出现,而不是直接作为bean实例暴露自己。所以FeignClientFactoryBean可以看做是创建FeignClient的工厂,它的主要逻辑是getObject()方法,这个方法的主要逻辑就是根据@FeignClient的主要注解参数,来生成对应的实例。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186074.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月4日 下午12:16
下一篇 2022年10月4日 下午12:16


相关推荐

  • 大小端模式

    大小端模式一 大小端大端模式 内存高地址存放低字节小端模式 内存低地址存放低字节例如 Uint32i 0x 地址 大端 小端 0x00 12 78 0x01 34 56

    2026年3月18日
    2
  • customErrors与错误页面[通俗易懂]

    customErrors与错误页面[通俗易懂]本配置节相对简单而且常用mode的值有如下三种值说明On指定启用自定义错误。如果未指定 defaultRedirect,用户将看到一般性错误。Off指定禁用自定义错误。这允许显

    2022年7月3日
    41
  • java tcp粘包_socket拆包与组班

    java tcp粘包_socket拆包与组班importjava.nio.ByteBuffer;importio.netty.bootstrap.ServerBootstrap;importio.netty.buffer.ByteBuf;importio.netty.buffer.Unpooled;importio.netty.channel.ChannelFuture;importio.netty.channel.Channe…

    2022年8月11日
    6
  • 邓白氏编码申请流程(最新)「建议收藏」

    邓白氏编码申请流程(最新)「建议收藏」1.公司做医疗行业APP开发,公司的苹果账号是个人账户级别,不能发布医疗类APP(PLA1.2)。需要升级到公司级别,联系了苹果客服400-670-1855,苹果的客服大部分的人的普通话都够呛,反正能理解意思,你一定要说你就是老板,报你老板的名字,然后客服给回复了一封邮件 按照邮件如实给苹果回复邮件即可(没有邓白氏编码是不行的)。然后后续的升级方法步骤就不赘述了,苹果客服会一步步提示你的,…

    2025年8月9日
    6
  • 常见的ARM集成开发环境

    常见的ARM集成开发环境1.ARMSDT:是ARM公司为方便用户在ARM芯片上进行应用软件开发而推出的一整套开发工具。到ARMSDT2.5.1,ARM宣布推出ARMADS1.0取代了ARMSDT,不再对ARMSDT进行维护。ARMSDT支持的ARM处理器最高到包括ARM9在内的所有ARM处理器。配合Angel驻留程序和JTAG仿真器,用户使用可方便的使用ARMSDT进行应用程序的开发。2.ARM

    2022年5月18日
    41
  • Navicat 15 for MySQL注册激活码破解方法

    Navicat 15 for MySQL注册激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    105

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号