@CotrollerAdvice 가 적용된 클래스는 지정한 범위의 컨트롤러에 공통으로 사용될 설정을 지정할 수 있습니다
컨트롤러에 공통으로 사용될 설정은 익셉션 처리, Model 에 속성 넣기 등 다양하게 가능합니다
1
2
3
4
5
6
7
8
9
10
11
|
@ControllerAdvice("abc")
public class CommonController {
@GetMapping("/accounts/{id}")
@ModelAttribute("myAccount")
public Account handle() {
// ...
return account;
}
}
|
cs |
@ModelAttribute 가 위와같이 메소드 레벨에 있다면 @RequestMapping(여기서는 GetMapping) 메소드의 반환 값이 모델 속성이라고 볼 수 있습니다.
즉 Model.addAttribute() 를 사용한 것과 동일합니다.
메소드 인자에 사용한 것처럼 특별한 이름을 지정하고 싶으면 @ModelAttribute("name") 이렇게 사용이 가능합니다
그리고 중요한 점은 @ModelAttribute 애노테이션은 @RequestMapping 메소드 호출되기 전에 작동합니다
즉 abc 패키지에 포함된 컨트롤러가 아래와 같다면

"/" 요청을 보내면 home() 메서드가 실행되기 전에 @CotrollerAdvice 클래스 내부의 @ModelAttribute메서드가 실행됩니다
그리고 Model에 직접 지정한 "myAccount" 라는 이름으로 Account의 데이터를 타임리프,JSP와 같은 View에서 사용이 가능합니다
참고 출처
Web on Servlet Stack
Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, "Spring Web MVC," comes from the name of its source module (spring-webmvc), but it is more commonl
docs.spring.io
(공식 문서를 해석하여 잘못된 번역이 있을 수 있습니다.)
'인프라 > 도커&쿠버네티스' 카테고리의 다른 글
Stream parallel 병렬 처리에 List 사용 시, 충돌 문제 (1) | 2023.12.27 |
---|---|
[스프링 부트] 네이버 SMTP 이메일 인증 오류 the sender address is unauthorized nsmtp (1) | 2023.01.17 |