@RequestBody 는 요청 본문에 있는 JSON 등의 객체를 자바 객체로 HttpMessageConverter에 등록된 구현체를 통해 변환해서 맵핑하는 기능을 합니다.
{
"username" : "juni",
"password" : "1234",
}
@ModelAttribute는 요청 파라미터에 있는 String정보를 자바 객체의 필드 값으로 변환해서 받는 기능을 합니다.
요청 파라미터 예시
1. http://localhost:8080/mypage?username=juni
2.
<form action="user/new" method="post">
아이디 : <input type="text" name="username"/>
비밀번호 : <input type="password" name="password"/>
</form>
BindingResult는 바인딩의 결과를 담는 아규먼트 타입입니다. @ModelAttribute 에서의 바인딩은 HttpMessageConverter 구현체중 jackson converter가 담당해서 하는데, 이 jackson converter가 변환하는 과정에서 에러가 발생하면 바로 에러 응답을 보냅니다. 그리고 일단 jackson이 자바 객체로 변환한 후에 @Validation 체크를 할 수 있는데, 이 때 발생한 에러는 bindingResult로 담을 수 있습니다.
@ModelAttributed의 경우, binding을 하는 주체가 스프링이기 때문에, string대신 int를 받으면 에러를 bindingResult에 던져줄 수 있지만, @RequestBody의 경우, binding을 하는 주체가 외부 라이브러리여서 그 외부 라이브러리는 바인딩에 실패하면 단순히 400에러만 을 던져줍니다. 대신, 바인딩 처리가 끝나고 @Validation 체크는 스프링에서 처리하고 bindingResult에 담아줄 수 있습니다.
https://www.inflearn.com/questions/375360
'성동스터디 (2021.09.09 ~ ing) > Spring' 카테고리의 다른 글
[Spring][이클립스] DevTools 동작 안할 때 (0) | 2021.12.29 |
---|---|
[Spring][이클립스] 메이븐 프로젝트 의존성이 안들어올 때 (0) | 2021.12.29 |
[Spring][Thymeleaf] background-image 사용하기 (0) | 2021.12.28 |
[Spring] 페이징 글번호 끝에서 부터 표시하기 (1) | 2021.12.24 |
[Spring] 의존성 주입과 IoC컨테이너 (0) | 2021.11.20 |
댓글