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
'개발 > Java&Kotlin' 카테고리의 다른 글
[Java] Stream 사용 시 주의 사항 (0) | 2023.06.14 |
---|---|
[Java] Array보다 List를 사용해야하는 이유 (0) | 2023.06.13 |
[Java] 클래스, 추상클래스, 인터페이스 차이 (0) | 2023.04.21 |
[JPA] N+1 해결하기 (1) | 2023.03.07 |
[Java] Raw 타입은 사용하지 말기 (0) | 2023.01.23 |