Feign API模块导入的两种方式

news2024/11/18 11:35:14

说明:在微服务框架中,会把其他微服务用到的FeignClient统一放到一个模块里面,称为FeignAPI,其他微服务需要使用FeignClient,引入FeignClient的Maven坐标就可以使用。

但是只引入FeignAPI的坐标还不行,FeignAPI中的Bean对象是孤立的,还需要把FeignAPI中的Bean对象加入到IOC容器中才可以正常使用。有以下两种方式:

方式一:自动装配

可以使用SpingBoot自动装配的原理,在该模块下的resources文件夹下创建一个META-INF文件夹,该文件夹下创建一个spring.factories文件。

在这里插入图片描述

该文件内写下面这行配置:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=核心配置类

表示项目启动时,自动装配该Bean,然而该Bean又可以作为配置类,可以添加许多需要自动装配的Bean对象,比如客户端类(FeignClient)所在包下的所有客户端类,拦截器类,如下:

/**
 * feign配置类
 */
@EnableFeignClients(basePackages = "com.hmall.feignclient")
@Configuration
public class FeignConfig {

    /**
     * RequestInterceptor拦截器
     * @return
     */
    @Bean
    public AuthorizationRequestInterceptor feighClientIntercepter(){
        return new AuthorizationRequestInterceptor();
    }

    /**
     * HandlerInterceptor拦截器
     * @return
     */
    @Bean
    public MVCInterceptorConfig mvcInterceptorConfig(){
        return new MVCInterceptorConfig();
    }
}

方式二:注解

还可以在需要使用到FeignAPI的微服务启动类上,增加@EnableFeignClients注解,注解内填Feign中的Client类和注册类;

@EnableFeignClients(clients = {注册类1.class,注册类2.class},defaultConfiguration = 配置类.class)

在这里插入图片描述

总结

以上两种方式都可以实现FeignAPI模块的导入,但是强烈推荐使用自动装配的方式*,有以下几点理由:

  • 自动装配使用了SpringBoot底层原理,更加高级;

  • 自动装配把导入模块需要做的事情,写在了模块本身上,使其他微服务引入了依赖就可以用,减少了代码入侵,非常方便;

  • 另外,使用自动装配的方式,可以把MVC的拦截器直接写在FeignAPI里,如果使用了注解的方式就不行;

  • 最后,使用注解方式很容易出现空指针异常或者意向不到的错误;

总之一句话,不要用注解,用自动装配;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/803886.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【分布式】分布式唯一 ID 的 几种生成方案以及优缺点snowflake优化方案

在互联网的业务系统中,涉及到各种各样的ID,如在支付系统中就会有支付ID、退款ID等。那一般生成ID都有哪些解决方案呢?特别是在复杂的分布式系统业务场景中,我们应该采用哪种适合自己的解决方案是十分重要的。下面我们一一来列举一…

数字化新时代,VR全景拍摄与制作

导语: 随着科技的飞速发展,数字化图片正在引领新的时代潮流。在这个数字化图片的新时代,VR全景拍摄与制作技术正以其独特的特点和无限的优势,成为数字影像领域的一颗璀璨明星。让我们深入了解VR全景拍摄与制作的特点和优势&#…

PLC绝对值指令ABS()

在C语言里,ABS()指令属于基础指令,博途PLC系统也有绝对值指令。对于S7-200SMART PLC则需要自行构造,下面给出SMART PLC的绝对值指令ABS()。 1、S7-SMART PLC绝对值指令 2、STL代码 SUBROUTINE_BLOCK ABS:SBR3 TITLE=ABS()函数 VAR_INPUT x:REAL; END_VAR VAR_OUTPUT y:RE…

市值超300亿美金,SaaS独角兽Veeva如何讲好中国故事?

“全球前50的药企,有47家正在使用Veeva。” 提到Veeva Systems(以下简称“Veeva”),可能很多人并不熟悉。但是生命科学业内人士都知道,Veeva是全球头部的行业SaaS服务商。以“为生命科学行业构建行业云”为使命&#x…

网络安全(黑客)自学——从0开始

为什么学习黑客知识?有的人是为了耍酷,有的人是为了攻击,更多的人是为了防御。我觉得所有人都应该了解一些安全知识,了解基本的进攻原理。这样才可以更好的保护自己。这也是这系列文章的初衷。让大家了解基本的进攻与防御。 一、怎…

记一次有趣的debug,VS编译器上Debug和Realease的差异

之前自己写过一个imageread的函数,用了好久一直没问题。最近两天,同事让我realease一个项目给他,其中就包含了我自己写的imageread函数。 我的函数就长这样,不包含公司的code,不算泄密哈。 在realse之前,我…

一些有意思的人工智能发展状况数据

随着大型语言模型(LLM)的引入,机器学习(ML)和人工智能(AI)首次被日常开发人员所使用。这些令人感觉很神奇的应用程序,甚至是拥有数十亿研发支出的,在以前连大型科技公司几…

探索Java API学习路线:从基础到高级的全面指南

文章目录 第一阶段:入门基础1. 环境准备2. 学习Java基础 第二阶段:熟悉常用的Java API1. Java标准库2. Java API文档 第三阶段:深入学习特定领域的Java API1. Java GUI API2. Java数据库连接(JDBC)API3. Java多线程API…

企业全渠道营销终极指南

客户不再在单一的渠道购物,渠道跳跃正在成为全球流行的消费者购物行为。他们用多种渠道与品牌互动,包括社交媒体、电子邮件等,这迫使企业必须采用全渠道营销策略来满足客户不断变化的需求,为客户提供个性化的体验,提高…

客户支持工具从被动到主动的演变

在当日新月异的商业环境中,企业需要适应不断增长的客户需求,优质的客户支持变得越来越重要。客户支持工具从传统系统到尖端 AI驱动解决方案的演变具有变革性,增强了主动和无缝的支持体验。所以,使用正确的客户服务工具很重要&…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第三十九天 39/50【二分】【二叉搜索数第k个节点】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

XRCameraSubsystem浅析

在使用ARFoundtion 4.2.8版本,要获取相机图像,还是通过ARCameraManager获取的。 大概的调用流程: 1. 应用脚本获取ARCameraManager对象,默认是挂在AR Camera下,向其注册回调函数。 2. ARCameraManager里会在每次Upd…

TortoiseSVN操作使用

说明 SVN常用于程序代码版本控制,由于业务需求需将生产资料通过SVN进行管控,涉及人员众多,权限分支管理需要细化,特此记录SVN的学习操作. 前言 版本控制是管理信息修改的艺术,它一直是程序员最重要的工具,程序员经常会花时间作出小的修改, 然…

干货 | 电路设计中如何减少ESD?

干货 | 电路设计中如何减少ESD? 今天给大家分享的是:在电路设计和PCB设计如何防止ESD损坏设备。 在电子行业中,保护设备免受ESD损坏是必须要注意的。静电放电(ESD)是一种非常高的电压尖峰,很容易损坏集成电…

【C++】STL中stack,queue容器适配器的模拟实现(使用deque容器)

文章目录 前言一、deque的一些基本知识相比vector:相比list:3为什么选择deque作为stack和queue的底层默认容器 二、stack模拟实现三、queue的模拟实现 前言 STL标准库中stack和queue的底层结构 :虽然stack和queue中也可以存放元素&#xff0c…

vue的组件化编程的详细讲解加代码演示

😀前言 本片文章是vue系列第5篇整理了vue的组件化编程的详细讲解加代码演示 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力&am…

leetcode 53. 最大子数组和

2023.7.28 要求找最大和的 连续子数组, 我的思路是用一个temp记录局部最优值,用ans记录全局最优值。 然后在每次for循环进行一个判断:当前遍历元素temp值 是否大于当前遍历元素的值,如果大于,说明temp值是帮了正忙的&a…

第12章 Linux 实操篇-Linux磁盘分区、挂载

12.1 Linux 分区 12.1.1 原理介绍 (1) Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构, Linux中每个分区都是用来组成整个文件系统的一部分。 (2) Linux采用了一种叫“载入”的处理方法,…

临床医学怎样翻译比较 好

近年来,随着不同国家之间医药行业形成的共同研究趋势,临床翻译对于来自不同国家的医疗人员的合作至关重要。那么,临床医学怎样翻译比较 好,北京哪个翻译公司比较专业? 据了解,临床医学翻译包含患者病历记录…

selenium自动化-获取元素属性信息

在写自动化过程中我们会想验证自己的代码是否正确,比如登录之后,通过用户名或其他信息来证明你登录成功,或者点击链接后,是否会跳转新的页面。通过获取元素属性信息,可以解决我们的疑惑。 一、获取内容对象的内容信息 …