springCloud注解系列:@FeignClient 作用简述
FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上源码如下:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface FeignClient {@AliasFor("name")String val
主要用于客户端服务发现,实际就是调用其他的服务。
FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上
源码如下:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FeignClient {
@AliasFor("name")
String value() default "";
@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;
}
声明接口之后,在代码中通过@Resource等注入之后即可使用。@FeignClient标签的常用属性下面将逐一详解。
1,name、value和serviceId
从源码可以得知,name是value的别名,value也是name的别名。两者的作用是一致的,name指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现。
其中,serviceId和value的作用一样,用于指定服务ID,已经废弃。
2,url
url属性一般用于调试程序,允许我们手动指定@FeignClient调用的地址。
3,path
path属性定义当前FeignClient的统一前缀。这样方便在该FeignClient中的@RequestMapping中书写value值。假如存在一系列的用户管理服务,
如下:
-
/app/service/aDong/get
-
/app/service/aDong/insert
-
/app/service/aDong/update
-
/app/service/aDong/delete
我们次都在@RequestMapping注解中编写全服务名称,是不是有点啰嗦。因此可以设置FeignClient的path路径为“/app/service/aDong”,简化@RequestMapping的编写。
4,primary
是否将伪代理标记为主Bean,默认为true
ps:原理解析,后续补发~~~
更多推荐
所有评论(0)