@ModelAttribute
클라이언트에서 전송받은 데이터(multiopart/form-data)의 요청데이터와 쿼리파라미터로 넘어 오는 데이터를
VO의 setter 메소드를 통해 VO와 1:1 바인딩 해주게 된다.
@RequestBody
클라이언트가 전송하는 JSON(application/json)이나 XML형태의 HTTP Body내용을 JavaObject로 변환시켜준다.(POST/PUT)
그렇기에 BodyMessage가 존재하지않는 Get에 ResponseBody를 사용하게 되면 에러가 발생한다(쿼리스트링으로는 표현이 불가능하기 때문)
JavaObject로 변환하기 때문에 setter 메소드를 필요로 하지 않는다.
(RestAPI 개발시 Json으로 요청이 오는경우가 대부분이기 때문에 이때는 @ResponseBody를 사용해야 한다.)
또한 @Validated 혹은 @Valid를 통해 @Validated가 정해둔 규약에 따라 값을 매핑하고 제약이 맞지않으면 매핑하지 않은 상태로 return 한다.
'개발 팁' 카테고리의 다른 글
JPA @Inheritance , @MappedSuperclass , @Embedded, @Embeddable (0) | 2023.02.24 |
---|---|
Redirect 와 Forward (0) | 2023.02.24 |
@AllArgsConstructor / @RequiredArgsConstructor (0) | 2023.02.23 |
@JsonIgnore (0) | 2023.02.23 |
@RequestBody / @ResponseBody (0) | 2023.02.21 |