首页 > 其他分享 >Feign的介绍与使用

Feign的介绍与使用

时间:2024-05-23 21:41:59浏览次数:15  
标签:Feign 服务 接口 介绍 使用 注解 id 客户端

  1. 什么是Feign?

    Feign是声明式Web Service客户端,它让微服务之间的调用变得更简单。

  2. 为什么使用Feign?

    • Feign旨在使编写Java Http客户端变得更容易;
    • 之前在使用Ribbon + RestTemplate时,利用RestTemplate对Http请求的封装处理,形成了一套模板化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一个客户端类来包装这些依赖服务的调用。所以,Feign在此基础上做了进一步的封装,由他来帮助我们定义和实现依赖服务接口的定义,在Feign的实现下,我们只需要创建一个接口并使用注解的方式来配置它 (类似以前Dao接口上标注Mapper注解,现在是一个微服务接口上面标注一个Feign注解即可),即可完成对服务提供方的接口绑定,简化了使用Spring Cloud Ribbon 时,自动封装服务调用客户端的开发量;
    • Feign默认集成了Ribbon。
  3. Feign的使用步骤

    • 导入依赖
    <!-- Feign -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-feign</artifactId>
    </dependency>
    
    • Feign实现消费者模块调用服务提供者模块的原理和原来的Dubbo+zookeeper类似,即需要使用注解实现远程注入,所以我们直接在springcould-api模块中添加一个接口DeptClientService,这个接口中的方法定义自己随意,只是方法上面要像controller一样写上@RequestMapping或者它的变体@GetMapping、@PostMapping等,但是这个接口上面不需要使用注解@Controller或@RestController

    • 这个接口上面需要使用注解@FeignClient(value = “服务集群在注册中心中的名称”)和注解@Component或者它的变体@Service;其中注解@FeignClient+value属性用于指定注册中心中哪一个服务中的

    @Component //被spring托管/装配到spring容器中
    //@FeignClient:微服务客户端注解,value:指定微服务的名字,这样就可以使Feign客户端直接找到对应的微服务
    @FeignClient(name="user-provider")
    public interface UserFeignClient {
        @GetMapping("/user/{id}")
        User getById(@PathVariable("id") Integer id);
    }
    
    • 修改Controller
    @RestController
    public class MovieController {
        @Autowired
        private UserFeignClient userFeignClient;
    
        @GetMapping("/user/{id}")
        public User findById(@PathVariable Integer id) {
            return userFeignClient.getById(id);
        }
    
    }
    
    • 修改启动类
    @SpringBootApplication
    @EnableFeignClients
    public class MovieApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MovieApplication.class, args);
        }
    }
    

标签:Feign,服务,接口,介绍,使用,注解,id,客户端
From: https://www.cnblogs.com/hytip/p/18209420

相关文章

  • Makefile使用教程1
    规则(Rules):一个Makefile文件由一条一条的规则构成,一条规则结构如下target…(目标):prerequisites…(依赖)recipe(方法)……最简单的Makefilehello:hello.cppg++hello.cpp-ohello#开头必须为一个Tab,不能为空格但通常需要将......
  • Flutter笔记:Widgets Easier组件库-使用隐私守卫
    Flutter笔记WidgetsEasier组件库:使用隐私守卫-文章信息-Author:李俊才(jcLee95)VisitmeatCSDN:https://jclee95.blog.csdn.netMyWebSite:http://thispage.tech/Email:[email protected]:https://blog.csdn.net......
  • ES数据迁移工具介绍及最佳实践
    一、项目背景由于项目升级需要将es索引迁移,从es版本看是从elasticsearch-5.6.6版本迁移到elasticsearch-7.17.5版本中,因之前其他项目采用elasticdump工具迁移,有过成功经验,所以首先借鉴其经验采用elasticdump工具来实现。注意:由于网络、服务器性能等的关系,elasticdump工具在索......
  • 使用tc命令模拟linux网络延迟环境
    tc(TrafficControl)是Linux中用于流量控制和网络模拟的强大工具。你可以使用它来模拟网络延迟、带宽限制、数据包丢失等。以下是一个使用tc模拟网络延迟的基本步骤:1.查看当前的qdisc(队列规则)和filter(过滤器)首先,确保你的网络接口没有设置任何qdisc。你可以使用以下命令查......
  • 配置kdump使用的debug内核
    1.背景在ubuntu20.04上使用自己编译的内核配置kdump,发现kdump的内存用量特别大,我从1024M开始,每次加128M进行测试,直到1536M才能成功转储。这应该和我编译的内核尺寸有关,/var/lib/kdump目录下的initrd.img足足有三百多M:这样占用1.5个G的空间确实很浪费。而且这个值还不能过大,比......
  • 如何查看mysql使用的内存
    要查看MySQL使用的内存,我们可以通过多种方式来获取相关信息。以下是几种常见的方法,包括使用命令行工具、MySQL的系统变量以及查询information_schema数据库。1.使用SHOWSTATUS命令我们可以使用SHOWSTATUS命令来查看MySQL服务器状态,其中包括一些与内存使用相关的变量。SHOWS......
  • JavaScript中reduce()详解及使用方法。
    一、定义和用法reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce()可以作为一个高阶函数,用于函数的compose。reduce()方法为归并类方法,最常用的场景就是,计算数组中的每一项的总和。注意:reduce()对于空数组是不会执行回调函数的......
  • python DataFrame之MultiIndex 的使用
    importpandasaspdimportpprintasp#嵌套列表arrays=[['a','a','b','b'],[1,2,1,2]]#创建MultiIndexindex=pd.MultiIndex.from_arrays(arrays,names=('letter','number'))#使用MultiInd......
  • elasticsearch使用Sort排序时Please use a keyword field instead.
    具体报错信息ElasticsearchStatusException[Elasticsearchexception[type=search_phase_execution_exception,reason=allshardsfailed]];nested:ElasticsearchException[Elasticsearchexception[type=illegal_argument_exception,reason=Textfieldsarenotoptimised......
  • 百问网,T113 usb摄像头使用cpu解码显示
    1资料下载https://download.100ask.net/boards/Allwinner/T113/index.html2软件安装资料下载完毕后,根据说明,安装vmware,安装win驱动3配置开发环境为了方便,建议将sdk文件上传到目录/home/book/安装必要的工具包,如果出现问题Couldnotgetlock/var/lib/dpkg/lock-......