@ModelAttribute와 @RequestBody 차이점
@ModelAttribute
URL의 쿼리 파라미터나 HTML Form 형식으로 HTTTP 요청 파라미터가 전송되는 경우.
예를 들어, 사용자가 폼에 데이터를 입력하고 제출하는 경우, 사용자가 입력한 데이터는 HTTP 요청 파라미터로 전송된다.
@PostMapping("/users")
public String processForm(@ModelAttribute("user") User user) {
// user 객체는 HTTP 요청 파라미터를 바인딩하여 생성됨
...
}
이렇게 @ModelAttribute
를 사용하면 HTTP 요청 파라미터를 User 객체에 자동으로 바인딩할 수 있다.
@RequestBody
HTTP 메세지 바디에 Json 등의 형태로 전송되는 경우.
사용자가 웹 페이지에서 JSON 형태의 데이터를 보내는 경우, 사용자가 보낸 데이터는 HTTP 메세지 바디에 포함되어 전송된다.
@PostMapping("/users")
public String addUser(@RequestBody User user) {
// user 객체는 HTTP 요청 본문의 JSON 데이터를 파싱하여 생성됨
...
}
이렇게 @RequestBody
를 사용하면 HTTP 요청 바디의 JSON 데이터를 User 객체로 자동으로 변환할 수 있다.
즉, @ModelAttribute
는 HTTP 요청 파라미터를 객체에 바인딩하는데 사용되며, @RequestBody
는 HTTP 메세지 바디의 데이터를 객체로 변환하는데 사용된다.
만약 Json이 HTTP 메세지 바디로 넘어오는데 @RequestBody가 아닌 @ModelAttribute를 사용하면 HTTP 메세지 바디가 아닌 요청 파라미터를 처리하게 된다.
[참고] 인프런 김영한 : 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
728x90
반응형
'Spring | Spring Boot' 카테고리의 다른 글
[Spring] @Configuration과 CGLIB의 관계 (0) | 2024.02.04 |
---|---|
Spring AOP 개념 정리 (0) | 2023.12.20 |