CSDN トピック チャレンジ フェーズ 2
参加トピック:調査ノート
個人名刺:
ブロガー:アルコール依存症ᝰ。
個人プロフィール:ワインに酔いしれ、お酒で未来を切り拓く。
この記事は感動的です: 3 人が歩いて、私の先生がいるに違いありません。
このプロジェクトは、ステーション B Java のダークホース プログラマー「SpringCloud Microservice Technology Stack」に基づいており、SpringCloud+RabbitMQ+Docker+Redis+search+distributed
[SpringCloud+RabbitMQ+Docker+Redis+search+distributed, システム詳細 springcloud マイクロサービス テクノロジー スタック コース|ダーク ホース プログラマー Java マイクロサービス]クリックして視聴
目次
1. Feign は RestTemplate を置き換えます
2. ログの設定
1. ログレベル
NONE:ログなし
BASIC:リクエストメソッド、URL、レスポンスステータスコード、実行時間
HEADERS:リクエストメソッド、URL、レスポンスステータスコード、実行時間、リクエストヘッダ、レスポンスヘッダ
FULL:リクエスト、レスポンスのヘッダ、ボディ、メタデータをほぼ記録すべての情報
2. 方法 1: 構成ファイルによる方法
- グローバルに有効にする
feign:
client:
config:
default:
logger-level: Full
- 局所効果
feign:
client:
config:
userservice: # 服务名名称
logger-level: Full
3. 方法 2: Java コードによる方法
- DefaultFeignConfiguration クラスが作成される構成モジュール config を作成します。
package cn.itcast.order.config;
import feign.Logger;
import org.springframework.context.annotation.Bean;
public class DefaultFeignConfiguration {
@Bean
public Logger.Level feignLogLevel(){
return Logger.Level.FULL; // 日志级别为
}
}
- グローバル構成
スタートアップクラスでは、天国は次のように注釈されています
@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class) //全局生效
- ローカル構成
次の注釈をコントローラー クラスに追加します。値はサービス名です。
@FeignClient(value = "userservicec" , configuration = DefaultFeignConfiguration.class) // 局部生效
3. パフォーマンスの最適化
方法: 接続プールを使用 (ここでは Apache HttpClient を使用)
- 依存関係のインポート
<!--HttpClient的依赖-->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
- 接続プールを構成する (application.yml)
feign:
httpclient:
enabled: true
max-connections: 200
max-connections-per-route: 50
推奨事項: ログ レベルには basic または none を使用します
4. ベスト プラクティス
1.継承
コードの結合度が高い場合は、統一された親インターフェイスを定義し、このインターフェイスを継承します。
2.抽出
1.手順
FeignCLient を別のモジュールとして抽出する
- feign-api という名前の新しいモジュールを作成します。
- 偽の依存関係を導入する
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
- クライアント、構成、pojo モジュールを feign-api モジュールに移動します。
- order-service に feign-api 依存関係をインポートする
<!--feign-api依赖-->
<dependency>
<groupId>cn.itcast.demo</groupId>
<artifactId>feign-api</artifactId>
<version>1.0</version>
</dependency>
- order-service の上記 3 つのモジュールに関するインポートを、feign-api のパッケージに変更します。
- テストを再開する
2.例外
再起動時に次の例外が発生します:
cn.itcast.order.service.OrderService のフィールド userClient には、見つからないタイプ 'cn.itcast.feign.clients.UserClient' の Bean が必要でした。
理由:
FeignClients は、パッケージをスキャンするスタートアップ クラス @SpringBootApplication の範囲内にありません
解決策:
方法 1: FeignClients が配置されているパッケージを指定します
@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class, basePackages = "cn.itcast.feign.clients") //全局生效
方法 2: FeignClients バイトコードを指定する
@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class, clients = UserClient.class)