본문 바로가기
개발/Spring

[Spring] @Modelattribute, @RequestBody 차이점

by devhooney 2023. 4. 26.
728x90


@ModelAttribute와 @RequestBody는 둘 다 Spring MVC 프레임워크에서 사용되는 어노테이션으로, HTTP 요청의 데이터를 컨트롤러 메서드에서 처리하기 위해 사용된다.

그러나 두 어노테이션의 사용 방법과 동작에 차이점이 있다.

 

@ModelAttribute

@ModelAttribute는 HTTP 요청의 파라미터를 객체로 바인딩하기 위해 사용된다.

컨트롤러 메서드의 파라미터 앞에 @ModelAttribute를 사용하여 해당 파라미터를 객체로 변환하고, 이를 컨트롤러 메서드 내에서 사용할 수 있다.

또한, 이 어노테이션을 사용하면 해당 객체를 자동으로 뷰로 전달된다.

주로 HTML 폼 데이터를 처리할 때 사용된다.

객체 클래스에 @Setter 어노테이션이나 Setter가 필요하다.

 

예시

@PostMapping("/user")
public String createUser(@ModelAttribute User user) {
    // user 객체를 사용하여 사용자 생성 로직 수행
    return "userCreated"; // 뷰 이름 반환
}

 

 

@RequestBody

@RequestBody는 HTTP 요청의 본문(body)에 담긴 데이터를 객체로 바인딩하기 위해 사용된다.

컨트롤러 메서드의 파라미터 앞에 @RequestBody를 사용하여 해당 파라미터를 요청 본문의 데이터를 변환하여 객체로 받아올 수 있다.

주로 JSON, XML, 또는 기타 데이터 형식의 요청을 처리할 때 사용된다.

 

예시

@PostMapping("/user")
public String createUser(@RequestBody User user) {
    // user 객체를 사용하여 사용자 생성 로직 수행
    return "userCreated"; // 뷰 이름 반환
}

 

주로 @ModelAttribute는 요청의 파라미터를 객체로 바인딩하고 뷰로 전달하는 목적으로 사용되고, @RequestBody는 요청 본문의 데이터를 객체로 바인딩하는 목적으로 사용된다.

 

 

728x90