@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에서 사용이 가능합니다.
[참고 출처]