[27] springbootはthreadLocal+パラメータパーサーを通じて現在のログイン情報をセッションと同様に保存する機能を実現します

    Springboot の章の全体的なコラム: 


[1] springboot は Swagger を統合します (非常に詳細な

[2] springboot は swagger (カスタム) を統合します (非常に詳細)

[3] springboot 統合トークン (超詳細)

[4] springboot は mybatis-plus を統合します (非常に詳細) (オン)

[5] springboot は mybatis-plus を統合します (非常に詳細) (下記)

[6] springboot はカスタムのグローバル例外処理を統合します

[7] springboot は redis を統合します (非常に詳細)

[8] springbootはAOPを統合してログ操作を実現します(超詳細)

[9] springboot 統合タイミング タスク (超詳細)

[10] springboot は redis を統合してスタートアップ サービスを実現します。つまり、ホットスポット データをグローバルと redis に保存します (超詳細)

[イレブン] スプリングブートはクォーツを統合してタイミングタスクの最適化を実現します(超詳細)

[12] springboot はスレッド プールを統合して高い同時実行性を解決します (非常に詳細で、理解が容易です)

【その13】springbootは非同期呼び出しを統合して戻り値を取得する(超詳細)

[14] springboot は WebService を統合します (超詳細)

[15] springboot は WebService を統合します (パラメーターの受け渡しについて) (超詳細)

[16] springboot は WebSocket を統合します (超詳細)

[Seventeen] springboot が WebSocket を統合してチャット ルームを実現 (超詳細)

[18] springboot はカスタムのグローバル例外処理を実装します

[Nineteen] springboot は ElasticSearch の実戦を統合します (1 万文字)

[Twenty] スプリングブート統合フィルター戦闘

[21] springboot は実戦でのインターセプターを統合し、フィルターを比較します

[22] springboot統合活動7 (1) 実践的なデモンストレーション

【23】springboot統合スプリングビジネスの詳細説明と実戦

[24] springbootはEasyExcelとスレッドプールを使用してExcelデータのマルチスレッドインポートを実現します

[25] springboot は、キャッシュの侵入を処理するために jedis および redisson Bloom フィルターを統合します

        作成者や変更者の保存など、現在ログインしているユーザーを取得する機能は開発において必要な機能です。以前は、セッションの set メソッドと get メソッド (各メソッドのパラメータ リストを HttpServletRequest リクエスト パラメータで追加する必要があります) または Spring Security などのフレームワークを使用して、現在のログイン情報を取得していました。以下に、プロジェクトで現在使用されているメソッドを共有します。

        QQ 交換グループ ナビゲーション ——> 231378628

一般的なプロセスは次のとおりです。

目次

1.スレッドローカル

二、HandlerMethodArgumentResolver

3. 実践的なデモ


1.スレッドローカル

        スレッド ローカル変数。スレッド変数を作成した後、各スレッドはこの変数の変数の独自のコピーを持つことができ、各スレッドは他のスレッドから独立した独自のアクセスのコピーになります。

二、HandlerMethodArgumentResolver

        このインターフェースはリクエストパラメータの前処理に使用され、次の 2 つのメソッドがあります。

  • SupportsParameter: リクエスト パラメーターがパーサーをサポートしているかどうかを判断します (サポートを示す場合は true を返し、resolveArgument メソッドは引き続き呼び出されます。サポートしないことを示す場合は false を返します。パラメーター分析の完了後、resolveArgument メソッドは呼び出され続けません) )。
  • solveArgument: パラメータ解析の特定の実装ロジック。パラメータ解析後に最終的にカプセル化されたオブジェクトを返します。

3. 実践的なデモ

        1.インターセプター

        シミュレートされたフロントエンド リクエストにはトークンが含まれており、1 が渡された場合はキャッシュから取得したユーザー情報が Zhang San であるとみなされ、それ以外の場合は Li Si であると見なされます。そしてスレッド変数にユーザー情報を詰め込みます。

       2. グローバルユーザークラス

飢えた中国のシングルトンパターン        を採用

        3. カスタム注釈

        これは、インターフェイスがカスタム パラメーター パーサーをサポートするかどうかを判断するためにパラメーター リストで使用されます。

        4. カスタムパラメータ分析

        パラメーター解析クラスをカスタマイズし、HandlerMethodArgumentResolver インターフェイスを統合し、その 2 つのメソッドを書き換えます。ここで、メソッド パラメーターにカスタム アノテーションが含まれているかどうかを判断します。含まれている場合は、パーサーがサポートされていることを意味し、true を返し、次のメソッドを入力します実行。 

        書き換えられたresolveArgumentメソッドは、スレッド変数の値をアノテーションに対応するパラメータに返します。

        5. 構成

        構成クラスを作成し、WebMvcConfigurer インターフェイスを継承し、インターセプターの追加とパラメーター パーサーの追加メソッドを書き換えて、カスタム インターセプターとパーサーを追加します。

        6. テスト

        現在のログイン ユーザー情報を取得する 2 つのメソッドをテストします。 

おすすめ

転載: blog.csdn.net/weixin_56995925/article/details/126532539