Coding 공부/IntelliJ

[SpringBoot] @ControllerAdvice, @ModelAttribute("member")로 세션 속 멤버 정보를 전달하기

CBJH 2024. 6. 17.
728x90
반응형

스프링 MVC 꿀팁🍯: @ControllerAdvice와 @ModelAttribute("member")로 세션 속 멤버 정보를 모든 뷰에 쏙! 넣어주기 😎

혹시 매번 컨트롤러에서 세션에 저장된 멤버 정보를 가져와 모델에 추가하는 작업이 귀찮다고 느끼신 적 없나요? 그렇다면 오늘 알려드릴 꿀팁으로 개발 생산성을 높여보세요! 🚀

 

@ControllerAdvice란 무엇인가요? 🤔

  • 컨트롤러를 위한 조언자: 스프링 MVC에서 여러 컨트롤러에 공통적인 처리 로직을 적용할 때 사용하는 강력한 도구입니다.
  • 전역적인 문제 해결사: 예외 처리, 모델 속성 추가 등 다양한 작업을 중앙에서 관리하여 코드 중복을 줄이고 유지보수를 쉽게 만들어 줍니다.

@ModelAttribute("member")의 마법 ✨

  • 모든 뷰에 멤버 정보를 얍!: 세션에 저장된 Member 객체를 "member"라는 이름으로 모든 뷰에 자동으로 추가해 줍니다. 이제 매번 컨트롤러에서 모델에 추가할 필요가 없어요!
  • 뷰에서 편리하게 사용: Thymeleaf 등의 템플릿 엔진에서 ${member.username}, ${member.email}과 같이 멤버 정보를 간편하게 출력할 수 있습니다.

 

코드 한 줄 요약 📝

 
@ModelAttribute("member") public Member addMemberToModel(HttpSession session) { ... }
 

이 한 줄의 코드로 모든 컨트롤러에서 세션의 멤버 정보를 모델에 자동으로 추가해 주는 마법이 펼쳐집니다!

 

핵심 포인트 🎯

  • @ControllerAdvice: 여러 컨트롤러에 공통적인 처리 로직을 적용합니다.
  • @ModelAttribute: 모델에 특정 이름으로 데이터를 추가합니다.
  • HttpSession: 세션 정보에 접근하여 멤버 정보를 가져옵니다.

 

활용 예시 💡

 
@Controller
public class MyController {
    // ...

    @GetMapping("/profile")
    public String profile(Model model) { 
        // @ModelAttribute("member") 덕분에 member 정보는 이미 모델에 추가되어 있습니다.
        return "profile"; 
    }

    // ...
}
 

주의 사항 ⚠️

  • HttpSession에 "member"라는 이름으로 저장된 객체가 Member 타입인지 확인해야 합니다.
  • @ModelAttribute는 컨트롤러 메서드 실행 전에 호출되므로, 세션에 멤버 정보가 없을 경우 NullPointerException이 발생할 수 있습니다. 이를 방지하기 위해 적절한 예외 처리를 추가하는 것이 좋습니다.

 

마무리하며... 🤗

@ControllerAdvice와 @ModelAttribute를 함께 사용하면 스프링 MVC 프로젝트를 더욱 효율적으로 개발할 수 있습니다. 세션 속 멤버 정보를 모든 뷰에서 편리하게 사용해 보세요!

댓글