Spring MVC에서 클라이언트의 요청 데이터를 컨트롤러에서 받을 때 @RequestBody, @RequestParam, @ModelAttribute를 사용합니다.
각 어노테이션은 데이터 바인딩 방식과 사용 목적이 다르므로 상황에 맞게 선택해야 합니다.
@RequestBody를 사용하면 객체의 필드와 JSON 데이터가 매핑됨 @RestController
@RequestMapping("/users")
public class UserController {
@PostMapping("/create")
public String createUser(@RequestBody UserDTO userDTO) {
return "User created: " + userDTO.getName();
}
}
{
"name": "Alice",
"age": 25
}
UserDTO 객체에 바인딩 required = false), 기본값 설정 가능 @RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/find")
public String findUser(@RequestParam String name,
@RequestParam(defaultValue = "0") int age) {
return "User: " + name + ", Age: " + age;
}
}
요청 예시:
GET /users/find?name=Alice&age=25
name=Alice&age=25 → @RequestParam을 사용하여 각각의 변수로 받음 ?name=Alice&age=25)를 DTO나 VO 객체로 변환 @Controller
@RequestMapping("/users")
public class UserController {
@PostMapping("/update")
public String updateUser(@ModelAttribute UserDTO userDTO) {
return "User updated: " + userDTO.getName();
}
}
요청 예시 (폼 데이터 전송):
POST /users/update
Content-Type: application/x-www-form-urlencoded
name=Alice&age=25
| 어노테이션 | 데이터 전달 방식 | 주요 사용 사례 |
|---|---|---|
@RequestBody | Body(JSON, XML) | REST API에서 JSON 요청 처리 |
@RequestParam | Query Parameter / Form Data | 단순 값(문자열, 숫자 등) 전달 |
@ModelAttribute | Query Parameter / Form Data → 객체 변환 | HTML 폼 데이터 처리 |
Spring에서 클라이언트의 데이터를 받을 때 어떤 방식으로 전달되는지에 따라 적절한 어노테이션을 선택해야 한다는 점을 배웠습니다.
@RequestBody @RequestParam @ModelAttribute를 사용해야 함을 알게 되었습니다.