首页 > 其他分享 >Spring Cloud全解析:服务调用之Feign简介

Spring Cloud全解析:服务调用之Feign简介

时间:2024-09-13 12:25:56浏览次数:9  
标签:FeignClient Feign 调用 服务 String default Spring Cloud

Feign简介

Feign是Netflix开发的一个声明式的HTTP客户端(远程服务调用组件),只需要接口+注解即可完成对于微服务的调用,不需要使用RestTemplate+Ribbon来对微服务进行访问,简化了编程,其是基于动态代理机制,目标是减少HTTP调用的复杂性

依赖

<!-- feign -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

feign底层

feign底层默认使用的是jdk原生的URLConnection发送http请求,没有连接池,可以使用Apache的HttpClient来替换Feign原始的httpClient,使用连接池。通过动态代理的方式来构建Http请求

配置启动类

@SpringBootApplication
@EnableEurekaClient
// 启动feign,会进行对FeignClient的扫描加载
@EnableFeignClients(basePackages = "com.zhanghe.study")
public class ConsumerApp {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp.class,args);
    }
}

feign接口编写

// value中为所要访问的微服务
@FeignClient(value = "MICRO-SERVICE-DEPT-PROVIDER")
public interface DeptClient {

    @RequestMapping(value = "/dept/get/{id}",method = RequestMethod.GET)
    public Dept get(@PathVariable("id") long id);
}

直接调用该方法就可以调用该微服务的接口

@FeignClient参数说明

首先主程序入口添加了@EnableFeignClients注解开启对FeignClient扫描加载处理,否则无法加载@FeignClient注解所标注的接口

public @interface FeignClient {
  	// 指定了FeignClient的名称,如果使用了Ribbon,该值就是微服务的名称,用于服务发现
    @AliasFor("name")
    String value() default "";

    /** @deprecated */
    @Deprecated
    String serviceId() default "";
		// 指定了FeignClient的名称,如果使用了Ribbon,name就是微服务的名称,用于服务发现,且会作为bean的名称,如果该服务内有多个调用某个微服务的feign接口,可以使用value,而不使用name
    @AliasFor("value")
    String name() default "";

    String qualifier() default "";
		// 指定调用的地址,一般不使用该参数,而使用微服务的名称调用
    String url() default "";
		// 当发生404时,如果该字段为true,会调用decoder进行解码,否则抛出FeignException
    boolean decode404() default false;
		// 指定Feign的配置类,可以在Feign的配置类中自定义Feign的Encoder、Decoder、LogLevel、Contract
    Class<?>[] configuration() default {};
		// 失败回调,用于容错
    Class<?> fallback() default void.class;
		// 工厂生成fallback类实例,可以生成每个接口通用的容错逻辑
    Class<?> fallbackFactory() default void.class;
		// 定义当前FeignClient的统一前缀
    String path() default "";

    boolean primary() default true;
}

参考文献

标签:FeignClient,Feign,调用,服务,String,default,Spring,Cloud
From: https://www.cnblogs.com/life-time/p/18411983

相关文章

  • 基于Java+Springboot+Mysql实现智能物业信息化管理系统功能设计与实现三
    一、前言介绍:1.1项目摘要现代社会对物业管理效率和服务质量不断提升的需求。随着城市化进程的加速和房地产市场的蓬勃发展,物业管理行业面临着越来越多的挑战和机遇。传统的物业管理方式往往依赖于人工操作和经验判断,效率低下且难以满足现代社会的需求。因此,借助信息化技......
  • 基于Java+Springboot+Mysql实现智能物业信息化管理系统功能设计与实现四
    一、前言介绍:1.1项目摘要现代社会对物业管理效率和服务质量不断提升的需求。随着城市化进程的加速和房地产市场的蓬勃发展,物业管理行业面临着越来越多的挑战和机遇。传统的物业管理方式往往依赖于人工操作和经验判断,效率低下且难以满足现代社会的需求。因此,借助信息化技......
  • Springboot冬季奥运会校园招生系统的设计与实现nk418
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着冬季奥运会日益成为全球瞩目的体育盛事,培养具有国际视野和专业技能的冰雪运动人才成为重要任务。为了响应国家冰雪运动发展......
  • Springboot动物之家网站20338--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景在当今社会,随着人们对动物保护和自然生态的关注度不断提升,一个集动物科普、救助、交流于一体的平台显得尤为重要。为此,我们计划开发“......
  • Springboot电子商城的设计与实现710y1程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目概述本项目聚焦于设计与实现一个现代化、多功能的电子商城系统,旨在通过互联网技术搭建一个集商品展示、交易、支付、物流及售后服务于一体......
  • Springboot电影售票管理系统swy1p--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景电影市场的繁荣促使影院售票管理日益复杂,高效、准确的售票系统成为影院运营的关键。传统的手工售票方式不仅效率低下,还容易出现错误,影......
  • 基于SpringBoot+Vue+uniapp的图书馆管理系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的成绩管理系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的健身房预约系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • uniCloud
    https://doc.dcloud.net.cn/uniCloud/什么是uniClouduniCloud推出了opendb,包含了大量的开源数据库模板,常见数据表无需自己设计uniCloud推出了JQL(JavascriptQueryLanguage),会js即可掌握数据库查询,更对联表查询、Tree查询提供了非常简便的操作封装在数据库的schema中定义两个......