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 프로젝트를 더욱 효율적으로 개발할 수 있습니다. 세션 속 멤버 정보를 모든 뷰에서 편리하게 사용해 보세요!
'Coding 공부 > IntelliJ' 카테고리의 다른 글
[SpringBoot] 스프링부트에서 fastAPI Docs를 사용하는 방법 (0) | 2024.06.19 |
---|---|
[SpringBoot] 시큐리티 설정, 로그인 성공 처리 방법 (0) | 2024.06.18 |
[SpringBoot] Entity와 DTO를 ModelMapper로 쉽게 변환하기 (0) | 2024.06.17 |
[SpringBoot_JPA] 엔티티 어노테이션 @OneToMany, @Builder.Default, @BatchSize (0) | 2024.06.13 |
[SpringBoot_MariaDB] 파일 업로드 코드 추가 (0) | 2024.06.11 |
댓글