3OpenFeign

134 阅读1分钟

小知识,大挑战!本文正在参与「程序员必备小知识」创作活动

OpenFeign

@EnableFeignClients注解的作用是扫描被@FeignClient注解修饰的类,内部提供一些属性,用来找到需要扫描的包路径,然后根据包名在扫描的类里找出被@FeignClient修饰的类


//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package org.springframework.cloud.openfeign;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FeignClient {
    @AliasFor("name")
    String value() default "";

    /** @deprecated */
    @Deprecated
    String serviceId() 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;
}

@FeignClient注解属性:

value:服务名

serviceId:属性过期,作用和value一样

name:跟value属性一样

qualifier: 给@FeignClient注解修饰的Bean设置的Spring Bean名称

url:绝对路径,用于替换服务名,优先级比服务名高

decode404:表示对于一个HTTP状态码404的请求是否需要进行解码。默认是false,表示不进行解码,当成一个异常处理。设置为true之后,遇到HTTP状态码为404的Response还是会解析这个请求的body

fallback:当调用方法异常时,会调用这个Fallback类对应的FeignClient接口方法

fallbackFactory:表示生产fallbck类的Factory。FallbackFactory内部会针对一个Throwable异常返回一个Fallback类进行fallback操作

path:请求路径。在服务名或URL与requestPath之间

primary:默认是true,表示当前FeignClient生成的Bean是否是primary

contextId:FeignContext里维护的map的key,如果不设置,使用name属性

这就是FeignClient相关注解属性含义。