首页 > 其他分享 >@FeignClient注解

@FeignClient注解

时间:2022-09-04 22:14:08浏览次数:58  
标签:FeignClient Feign String default Spring 注解

@FeignClient注解

Spring Cloud OpenFeign是Spring Cloud团队将原生的Feign结合到Spring Cloud中的产物。从上面原生Feign的使用示列来看,用的注解都是Feign中自带的,但我们在开发中基本上都是基于Spring MVC的注解,不是很方便调用。所以Spring Cloud OpenFeign扩展了对Spring MVC注解的支持,同时还整合了Ribbon和Eureka来提供均衡负载的HTTP客户端实现。

调用示例:

@FeignClient("stores")
public interface StoreClient {
    @RequestMapping(method = RequestMethod.GET, value = "/stores")
    List<Store> getStores();
    @RequestMapping(method = RequestMethod.POST, value = "/stores/{storeId}", consumes = "application/json")
    Store update(@PathVariable("storeId") Long storeId, Store store);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

查看FeignClient注解代码如下:

public @interface FeignClient {
    @AliasFor("name")
    String value() default "";
    String contextId() default "";
    @AliasFor("value")
    String name() default "";
    String qualifier() default "";
    String url() default "";
    boolean decode404() default false;
    Class<?>[] configuration() default {};
    Class<?> fallback() default void.class;
    Class<?> fallbackFactory() default void.class;
    String path() default "";
    boolean primary() default true;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

下面就对各个属性进行分析

value、name
value和name的作用一样,如果没有配置url那么配置的值将作为服务名称,用于服务发现。反之只是一个名称。

contextId
我们不想将所有的调用接口都定义在一个类中,有一种解决方案就是为每个Client手动指定不同的contextId,这样就不会冲突了。

url
url用于配置指定服务的地址,相当于直接请求这个服务,不经过Ribbon的服务选择。像调试等场景可以使用。

decode404
当调用请求发生404错误时,decode404的值为true,那么会执行decoder解码,否则抛出异常。

configuration
configuration是配置Feign配置类,在配置类中可以自定义Feign的Encoder、Decoder、LogLevel、Contract等。

fallback
定义容错的处理类,也就是回退逻辑,fallback的类必须实现Feign Client的接口,无法知道熔断的异常信息。

fallbackFactory
也是容错的处理,可以知道熔断的异常信息。

path
path定义当前FeignClient访问接口时的统一前缀,比如接口地址是/user/get, 如果你定义了前缀是user, 那么具体方法上的路径就只需要写/get 即可。

primary
primary对应的是@Primary注解,默认为true,官方这样设置也是有原因的。当我们的Feign实现了fallback后,也就意味着Feign Client有多个相同的Bean在Spring容器中,当我们在使用@Autowired进行注入的时候,不知道注入哪个,所以我们需要设置一个优先级高的,@Primary注解就是干这件事情的。

qualifier
qualifier对应的是@Qualifier注解,使用场景跟上面的primary关系很淡,一般场景直接@Autowired直接注入就可以了。

https://blog.csdn.net/loet6010/article/details/119210406

标签:FeignClient,Feign,String,default,Spring,注解
From: https://www.cnblogs.com/sunny3158/p/16656270.html

相关文章

  • @FeignClient 的使用
     ​ 添加依赖  <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>......
  • 注解Annotation
    注解是一种引用数据类型,重点掌握Deprecated(表示已过时),Override(表示重写)。元注解是用来标注注解类型的注解如Target(用来标注注解可以出现在哪些位置)、Retention(用来标注最......
  • 2.注解开发springmvc
    通用配置:<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-i......
  • 注解
    注解Annotation     元注解meta-annotation(相当于自定义注解)元注解  target(value=)表示这个注解可以用在什么地方value可以传几个值ElementType.可以看源码......
  • 跟着黑马学SSM——Day3之注解
    注解开发纯注解开发Spring3.0升级了纯注解开发模式,使用Java类代替配置文件,开启了Spring快速开发通道Java类代替Spring核心配置文件@Configuration注解用于设......
  • 16.普通参数与基本注解
    1注解:@PathVariable、 restful风格的参数@RequestHeader、  请求头中的参数@ModelAttribute、 运用在参数上,会将客户端传递过来的参数按名称注入到指定对......
  • spring中@Transactional注解的作用,使用场景举例
    一,spring中管理事务一般使用@Transactional注解,下面对@Transactional使用的各个场景做一个列举,尽可能的将所有场景罗列出来1,场景一,最常见的用法,在方法上使用@Transactio......
  • @Transactional注解详细用法
    概述事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。SpringFramework对事务管理提供了一致的抽象,其特点如下:为不同的事务API提供一......
  • java 用反射获取自定义注解的信息实例
    最近看了些spring的源码,回来重新看一下反射和注解的一些文档,写了一个小例子,记录一下。packagecom.wbk.annotation;importjava.lang.annotation.*;importjava.lang.refle......
  • Java自定义Annotation注解开发详解
    Java自定义Annotation注解开发详解目录介绍一、运行期的自定义注解1.ClassLevelAnnotation2.MethodLevelAnnotation3.FieldLevelAnnotation4.使用自定义......