Notice
Recent Posts
Recent Comments
Link
jiny
Spring Controller 응답 시, 항상 Model에 공통 속성을 넣어서 응답하고 싶을 때 본문
@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에서 사용이 가능합니다
참고 출처
(공식 문서를 해석하여 잘못된 번역이 있을 수 있습니다.)
'Project > 작은 지식' 카테고리의 다른 글
Stream parallel 병렬 처리에 List 사용 시, 충돌 문제 (1) | 2023.12.27 |
---|---|
[스프링 부트] 네이버 SMTP 이메일 인증 오류 the sender address is unauthorized nsmtp (1) | 2023.01.17 |