小知识,大挑战!本文正在参与「程序员必备小知识」创作活动
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相关注解属性含义。