ホームページ >Java >Java Spring Boot コントローラーでの RequestHeader の重複

Java Spring Boot コントローラーでの RequestHeader の重複

WBOY
WBOY転載
2024-02-06 11:36:10620ブラウズ
質問の内容

Javaで書かれた一連のRestコントローラーがあります。当初の要件は、一部のエンドポイントにヘッダーを追加することでしたが、これらのヘッダー フィールドをほぼすべての REST コントローラーに追加することにしました。現在、プロジェクトには 100 を超える同様の API が含まれています:

リーリー

コードから、タプルのユーザー、GUID、呼び出し元、言語がソース コードのあらゆる場所に存在することは明らかですが、コードをリファクタリングして「1 か所」に配置するか、コードをより豊富にするにはどうすればよいでしょうか。それは明らかですか?メンテナンス可能。たとえば、5 番目のパラメータを追加する必要がある場合は、100 API を使用する必要があります。

Java Spring Boot でこれを行う正規の方法は何ですか?

理想的には次のようなものが欲しいです:

リーリー ###何か案は?コントローラーのおすすめは?他に何か?


正解


コードの重複の問題を解決し、スプリング ブート アプリケーションでのコードの保守を容易にするために、ヘッダーが抽出され、コントローラーに到達する前に処理されます。さらに、ヘッダー パラメーターをオブジェクトにカプセル化して、コードの可読性と保守性を向上させることもできます。

要約すると、

requestheaders dto を作成し、customheaderfilter を実装し、それを filterregistrationbean に登録してスプリング ブート コントローラーに統合することで、ヘッダー処理を一元化します。共通ヘッダーを適用します。

以下は推奨される方法です:

  1. ヘッダー dto (データ転送オブジェクト) の作成:

    パブリックヘッダーパラメーターを表すクラスを定義します。このクラスはヘッダーから抽出された値を保持します。

    リーリー

  2. フィルターの作成:

    受信リクエストをインターセプトしてパブリック ヘッダーを抽出し、リクエスト プロパティに保存するフィルターを実装します。

    リーリー

  3. filterregistrationbean を使用してフィルターを登録します:

    メイン アプリケーション クラスで

    filterregistrationbean を使用してカスタム フィルターを登録します。 リーリー

    addurlpatterns メソッドをカスタマイズして、フィルターを適用する URL に一致させます。

  4. dto を使用するようにコントローラーを変更します:

    個別のヘッダー パラメーターの代わりに

    requestheaders dto を使用するようにコントローラーを変更します。 リーリー

ここで、新しいヘッダー パラメーターを追加したり変更を加えたりする必要がある場合は、

requestheaders クラスとフィルター ロジックを更新するだけで済みます。このアプローチにより、ヘッダー処理が集中化され、保守性が向上します。

以上がJava Spring Boot コントローラーでの RequestHeader の重複の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。