[Spring] 컨트롤러의 요청마다 동일한 데이터(Model)를 보내고 싶을 때

박진영·2023년 4월 30일
0
post-thumbnail

@CotrollerAdvice 가 적용된 클래스는 지정한 범위의 컨트롤러에 공통으로 사용될 기능을 지정할 수 있습니다

Exception 처리할때만 사용해서 몰랐는데, Model을 사용한 공통 데이터 전달 등 다양하게 가능합니다.

블로그 내부를 이동하면서 블로그의 카테고리는 운영자가 추가/삭제할 때마다 달라질 수 있으니 블로그 내부를 이동할 때마다 카테고리를 조회해야합니다. 이때 해당 기능을 사용하면 코드를 줄일수도 있을 것 같습니다. (물론 매번 조회하는 것이 부담되면 캐시등을 활용하면 될 것 같습니다.)

@ControllerAdvice("abc") //abc 패키지에서 작동
public class CommonController {
 
    @ModelAttribute("myAccount")
    public Account handle() {
    // ... 시큐리티컨텍스트홀더에서 Account 정보를 꺼내기 등 가능
    return account;
    }
}

@ModelAttribute 가 위와같이 설정되면

model.addAttribute("myAccount",(Account)account); 를 한것으로 볼 수 있습니다.
Model에 account 데이터를 담았습니다.


그리고 요청을 처리하는 컨트롤러가 아래와 같다면

"/" 요청을 받고 "board" 페이지로 응답을 할 때

Model로 전달된 데이터를 View에서 사용이 가능합니다.


만약 Model에 여러 데이터를 담고 싶으면 ControllerAdvice가 적용된 메소드에서 void를 return 하고 model에 직접 담을 수 있습니다. (참고-> https://sudong.tistory.com/40)



[참고 출처]

  1. https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-modelattrib-methods
profile
안녕하세요

0개의 댓글