この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 28258|答える: 2

[出典] 実用的な操作:Spring BootのAOPはリクエストパラメータ値を動的に変更します

[リンクをコピー]
掲載地 2021/11/06 12:15:55 | | | |
要件:プロジェクトはリクエストパラメータを動的に修正し、現在のユーザーの権限に基づいてリクエストパラメータに値を割り当てる必要があります。パラメータがコントローラーメソッドに入る前に、リクエストパラメータの変更を完了し、コントローラがサービス層を呼び出す際には、リクエストパラメータを条件として利用してデータをクエリ・修正できます。 パラメータを要求する場合には2つのケースがあります。

  • 高い権限を持つユーザーの場合は、実際に要求されたパラメータ値を利用できます
  • 部分的な権限しか持たない人の場合、リクエストパラメータの値は現在ユーザーに割り当てられた情報に基づいて動的に変更されます


最初はフィルターを使って実装しようと思いましたが、リクエスト内容のシリアライズやデシリアライズが面倒で、論理的な判断とパフォーマンスの低下も多かったです。 幸いなことに、SpringはAOPの顔指向機能を提供しており、簡単なコードで実装可能です。

まず、mavenプロジェクトpom.xmlはspring-boot-starter-aopパッケージを以下のように導入する必要があります。

パッケージが導入されると、AOP機能を利用できます。@Aspect注釈。

Aspect は5種類の通知注釈をサポートしています:

@Before: 事前通知(Pre-notification)はメソッドが実行される前に実行されます

@After: 通知後、メソッド実行後に実行されます

@AfterRunning: は通知を返し、メソッドが結果を返した後に実行されます

@AfterThrowing: 例外通知、メソッドが例外をスローした後に

@Around: メソッド実行の周りのラップアラウンド通知

Request.javaジェネリックリクエストラッパークラスを作成する:

新しいUserInfo.javaリクエスト特定データクラスを作成する:

現在のリクエストヘッダーにappidがある場合、requestパラメータappIdの値は変更されます。そうでなければrequestパラメータは変更されません。コードは以下の通りです:

新しいHomeControllerコントローラを作成し、Requestを含むリクエストパラメータを持つインターフェースを追加します<UserInfo>。コードは以下の通りです:

appIdリクエストヘッダーを含まないテストの場合、requestパラメータappIdは実際の値であり、以下の図に示されているように変更されていません。



appIdリクエストヘッダーを追加しようとすると、appIdリクエストパラメータが正常に変更されていることが確認できます。以下の図に示されています:



最後にソースコードを添付します:ハイパーリンクのログインが見えます。





先の:iPerf3を使ってデバイスのネットワーク通信速度をテストしてください
次に:VMware ESXiにiDRACサービスモジュールソフトウェアをインストールする
 地主| 掲載地 2021/11/06 12:21:32 |
Spring AOPでは、ビジネスロジックはビジネス自体のみに焦点を当て、ログ、パフォーマンス統計、セキュリティ制御、トランザクション処理、例外処理などをビジネスロジックコードから分離しています。これらの動作を分離することで、ビジネスロジックを導かないメソッドに分離し、その後、ビジネスロジックのコードに影響を与えずにこれらの動作を変更できるようにしたいと考えています。
掲載地 2023/03/15 11:11:04 |
zsdfghjkvbjnm
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com