Feign-SpringCloud(六)

Feignとは何ですか?

  FeignはRestのリクエストを隠し、SpringMVCのようなコントローラーのふりをすることができます。URLとスプライシングパラメーターをスプライスする必要はありません。Feignがそれを行います。

  Feignは、Netflixによって開発された宣言型のテンプレートHttpクライアントであり、Retrofit、JAXRS-2.0、およびWebSocketに触発されています。

  Feignは、HttpApiをより便利かつエレガントに呼び出すのに役立ちます。

  SpringCloudはFeignを拡張し、FeignがSpringMVCアノテーションをサポートするようにし、リボンとEurekaを統合して、Feignをより使いやすくしました。

 

Feignの最初の使用

依存関係をインポートする

<依存関係>
    <groupId> org.springframework.cloud </ groupId>
    <artifactId> spring-cloud-starter-openfeign </ artifactId>
</依存関係>

 

Feignをオンにする

  コメントを追加して、Feign機能を有効にします。

@SpringCloudApplication
@EnableFeignClients // feignクライアント
パブリック クラスを開くItcastServiceConsumerApplication {
    
    public  static  void main(String [] args){
        SpringApplication.run(ItcastServiceConsumerApplication。クラス、引数)。
    }
}

  RestTemplateの削除:Feignは、リボンロードバランシングのRestTemplateを自動的に継承しました。したがって、RestTemplateをここで登録する必要はありません。

 

クライアントを偽る

@FeignClient(value = "service-provider")// このクラスを偽のインターフェースとしてマークします
public  interface UserClient {

    @GetMapping( "user / {id}" 
    ユーザーqueryById(@PathVariable( "id" )Long id);
}

  これはインターフェースであり、Feignは動的プロキシーを通じて実装クラスを生成するのに役立ちます。これはMybatisマッパーと非常によく似ています。

  @FeignClientは、これが@Mapperアノテーションと同様にFeignクライアントであることを宣言します。また、value属性を使用してサービス名を指定します。

  インターフェースの定義メソッドはSpringMVCアノテーションを使用します。Feignはアノテーションに基づいてURLを生成し、結果にアクセスするのに役立ちます。

@コントローラ
@RequestMapping( "consumer / user" public  class UserController {

    @Autowired
    プライベートUserClient userClient;

    @GetMapping
    @ResponseBody
    public User queryUserById(@RequestParam( "id" )Long id){
        ユーザーuser = this .userClient.queryUserById(id);
        ユーザーを返す;
    }

}

 

負荷分散

  リボンの依存関係と自動構成は、すでにFeign自体に統合されています。

  したがって、追加の依存関係を導入する必要はなく、RestTemplateオブジェクトを登録する必要もありません。

 

Hystrixサポート

  FeignもデフォルトでHystrixを継承します。

  これはデフォルトでオフになっており、以下のパラメーターでオンにする必要があります。

偽物:
  hystrix:
    enabled:true#Feignのヒューズ機能を有効にします

 

リクエストの圧縮

  Spring Cloud Feignは、要求と応答のGZIP圧縮をサポートして、通信中のパフォーマンスの損失を減らします。

  要求と応答の圧縮機能は、次のパラメーターを使用して有効にできます。

偽物:
  圧縮:
    リクエスト:
      enabled:true #リクエスト圧縮を有効にします
    応答:
      enabled:true#応答圧縮を有効にします  

  同時に、要求されたデータ型と圧縮をトリガーするサイズの下限を設定することもできます。

偽物:
  圧縮:
    リクエスト:
      enabled:true #リクエスト圧縮を有効にします
      mime -types:text / html、application / xml、application / json#圧縮データタイプを設定
      min -request-size:2048#トリガー圧縮のサイズの下限を設定

 

ログレベル

  logging.level.xx = debugでログレベルを設定します。

  @FeignClientアノテーションが変更されたクライアントは、プロキシされたときに新しいFeign.Loggerインスタンスを作成するため、これはFeignクライアントに影響を与えません。

  このログのレベルを指定する必要があります。

ロギング:
  レベル:
    cn.itcast:デバッグ
@Configuration
 public  class FeignLogConfiguration {

    @豆
    Logger.Level feignLoggerLevel(){
        Logger.Level.FULLを返します。
    }
}

  NONE:デフォルト値であるログ情報を記録しません。

  BASIC:リクエストメソッド、URL、レスポンスステータスコード、実行時間のみを記録します。

  ヘッダー:BASICに基づいて、追加の要求および応答ヘッダー情報が記録されます。

  FULL:ヘッダー情報、リクエストの本文、メタデータなど、すべてのリクエストとレスポンスの詳細を記録します。

 

FeignClientで構成クラスを指定する

@FeignClient(値= "サービスprivider"、フォールバック= UserFeignClientFallback。クラス、構成= FeignConfig。クラスパブリック インターフェイスUserFeignClient {
    @GetMapping( "/ user / {id}" 
    ユーザーqueryUserById(@PathVariable( "id" )Long id);
}

 

おすすめ

転載: www.cnblogs.com/guancangtingbai/p/12698060.html