博客
关于我
Feign源码解析——初始化流程
阅读量:796 次
发布时间:2023-03-24

本文共 1248 字,大约阅读时间需要 4 分钟。

Feign源码解析——初始化流程

在使用Feign时,我们通常会在主类上加注解@EnableFeignClients来启用Feign功能,同时在需要调用接口的类上加注解@FeignClient以生成代理类。以下是从注解解析到注册流程的详细分析。

@EnableFeignClients注解

@EnableFeignClients注解的作用主要包括以下几点:

  • 注解保留策略:使用RetentionPolicy.RUNTIME,确保注解在类加载时保留。
  • 注解目标:作用于类型(即接口或类)。
  • 文档注解:为注解提供说明。
  • 依赖导入:通过@Import(FeignClientsRegistrar.class)导入Feign客户端注册器类。
  • 接下来我们深入分析FeignClientsRegistrar类的实现。

    FeignClientsRegistrar类

    FeignClientsRegistrar实现了ImportBeanDefinitionRegistrar接口,主要负责从注解中读取配置信息并注册到Spring容器中。核心方法是registerBeanDefinitions,内部通过registerDefaultConfigurationregisterFeignClients分别处理默认配置和客户端注册。

    registerFeignClients中,主要完成以下工作:

  • 获取注解属性(如clientsbasePackage)。
  • 扫描指定包下的类,筛选带有@FeignClient注解的接口。
  • 对每个符合条件的接口,解析注解属性并注册到Spring容器中。
  • @FeignClient注解解析

    当我们在接口上加上@FeignClient注解时,Feign会根据注解内容生成对应的代理类。具体来说,注解中可以配置以下属性:

    • value:指定接口的实现类或接口名称。
    • configuration:用于配置Feign的默认设置,如urlpath等。

    在注册过程中,首先会将configuration属性注册为FeignClientSpecification类型的Bean。随后,通过registerFeignClient方法,将剩余的信息注册为FeignClientFactoryBean类型的Bean。

    注解注册流程总结

  • 读取注解属性:从@EnableFeignClients注解中获取basePackageclients等信息。
  • 扫描包:根据配置信息扫描指定包中的类,筛选带有@FeignClient注解的接口。
  • 解析注解:对于每个符合条件的接口,解析注解中定义的属性。
  • 注册配置:将注解中的configuration属性注册为FeignClientSpecification类型的Bean。
  • 生成代理类:根据注解信息生成代理类,并注册为FeignClientFactoryBean类型的Bean。
  • 通过以上步骤,Feign能够自动化地初始化并生成所需的代理类,实现对远程服务的调用。

    转载地址:http://hhqfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现检查字符串是否包含字母表中所有字母的算法(附完整源码)
    查看>>
    Objective-C实现检查字符是否为字母算法(附完整源码)
    查看>>
    Objective-C实现检查数字是否为偶数算法(附完整源码)
    查看>>
    Objective-C实现检查数字是否为奇数算法(附完整源码)
    查看>>
    Objective-C实现检查给定图中是否存在循环算法(附完整源码)
    查看>>
    Objective-C实现检查给定字符串是否在camelCase中算法(附完整源码)
    查看>>
    Objective-C实现检查给定的字符串是否在kebabcase中算法(附完整源码)
    查看>>
    Objective-C实现检查给定的字符串是否在snake_case中算法(附完整源码)
    查看>>
    Objective-C实现检查给定的字符串是否是扁平(全部小写)的算法(附完整源码)
    查看>>
    Objective-C实现检检查回文字符串(区分大小写)算法(附完整源码)
    查看>>
    Objective-C实现检测U盘的插入与拔出 (附完整源码)
    查看>>
    Objective-C实现检测列表中的循环算法(附完整源码)
    查看>>
    Objective-C实现检测耳机插拔功能(附完整源码)
    查看>>
    Objective-C实现模拟键盘鼠标(附完整源码)
    查看>>
    Objective-C实现模板方法模式(附完整源码)
    查看>>
    Objective-C实现欧几里得距离(附完整源码)
    查看>>
    Objective-C实现欧几里得距离(附完整源码)
    查看>>
    Objective-C实现欧拉路径和欧拉回路算法(附完整源码)
    查看>>
    Objective-C实现正向CMDShell(附完整源码)
    查看>>
    Objective-C实现正数num使用递归找到它的二进制算法(附完整源码)
    查看>>