Feign【@FeignClient】


首先看一下@FeignClient注解的源碼:

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 "";

    @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注解被@Target(ElementType.TYPE)修飾,表示@FeignClient注解的作用目標在接口上。

針對其常用屬性做如下歸納:

  • String name():指定FeignClient的名稱,如果項目使用了ribbon做負載均衡,name屬性會作為微服務的名稱,用於服務發現。
  • String url():url一般用於調試,可以指定FeignClient注解調用的地址。
  • boolean decode404():當發生404錯誤時,如果該字段為true,會調用decoder進行解碼,否則拋出FeignException異常,默認是false。
  • Class<?> configuration():Feign的配置類,可以自定義Feign的Encoder、Decoder、LogLevel、Contract。
  • Class<?> fallback():定義容錯的處理類,當遠程調用超時或者遠程接口失敗,會調用對應接口的容錯邏輯,fallback指定的類必須實現@FeignClient標記的接口。
  • Class<?> fallbackFactory():工廠類,用於生成fallback類實例,通過這個屬性我們可以實現每個接口通用的容錯邏輯,減少重復的代碼。
  • String path():定義當前FeignClient的統一前綴路徑。

  

feign支持對特定名稱的feign細粒化配置,也支持針對整個項目做全局配置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM