@ControllerAdviceによるアーキテクチャ改善

各コントローラメソッドごとに現在ログインしているユーザーの情報を照会してモデルに入れるロジックは、コードの重複を発生させ、保守性を低下させます。また、非ログインユーザーのアクセス時に発生する可能性があるNullPointerExceptionの潜在的な原因にもなります。

これを解決するために@ControllerAdviceを導入しました。共通で必要なユーザー情報(userInfo)といいねリスト(likeList)をグローバルモデル属性として定義し、すべてのコントローラで個別に管理していたロジックを1箇所に集中させました。


@ControllerAdvice

public class GlobalControllerAdvice {

    @ModelAttribute("likeList")

    public List<Long> addLikeList(@AuthenticationPrincipal UserPrincipal userPrincipal) {

        if (userPrincipal == null) return new ArrayList<>();

        return postLikeService.getLikeList(userPrincipal.getUser().getId());

    }

}

このようなリファクタリングにより、コントローラは各ページの核心ビジネスロジックにのみ集中できるようになり、非ログイン状態に対する防御ロジックを中央で管理することでシステムの安定性を確保しました。

リンク:
リンク: » 韓国語で見る (한국어로 보기)
リンク: » 英語版を見る (Switch to English)
シェア: