Securitytechどうしてそう思ったかユーザー情報などを管理するDBが以下のようになっていました。この構造は、1人のユーザーがroleを複数持つ場合のDB構造なんですが、この構造が1人のユーザーに対して1個のロールしか割り当てられない場合でも使われていました。ロールごとにユーザー情報として別々の情報を持つようになっていたため、最終的に以下のようなDB構造になっていました。!そもそものDB構造の話はここではしないことにします。この時、AuthenticationPrincipalをそのまま使うと、以下のようなコードがロールごとに大量に書かれることになります。user.getRole1User().role1UserName;}このuser.getRole1Userの部分を毎回書くのが面倒なため、AuthenticationPrincipalをラップして一発でRole1Userのエンティティを取れるようにすることが目的です。実装まずAuthenticationPrincipalをラップしたアノテーションを作成します。{}次に実際に処理を行うクラスを作成します。}}これでメソッドを次のように書き換えれば、一発でrole1Userが持って来れるようになります。記述することができます。以下のコードは、role1UserPrincipalExtractorというBeanの、extractメソッドを呼び出す、という処理になっています。(#thisはAuthenticationPrincipalで取得されたUserのエンティティになります。)@role1UserPrincipalExtractor.extract(#this)よって、Role1UserPrincipalExtractor.extractメソッドが呼び出され、role1Userを取得することができます。フルマラソンのベストタイムが3時間切りなのが密かな自慢バッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。