728x90
@ModelAttribute와 @RequestBody는 모두 Spring MVC에서 사용되는 어노테이션으로, HTTP 요청에서 전송된 데이터를 컨트롤러 메서드에서 사용할 수 있게 하는 역할을 하지만 사용되는 방식과 동작은 다르다.
@ModelAttribute는 HTTP 요청 파라미터를 해당 컨트롤러의 메서드 매개변수에 바인딩한다.
즉, HTTP 요청 파라미터와 메서드 매개변수의 이름이 일치하면 자동으로 값을 매핑합니다. 또한, @ModelAttribute는 해당 메서드가 실행되기 전에 먼저 실행되어 모델에 데이터를 바인딩합니다.
이렇게 바인딩된 모델은 View에서 사용될 수 있습니다.
예를 들어
@GetMapping("/person")
public String getPerson(@ModelAttribute("person") Person person) {
// person 객체를 사용하여 작업 수행
return "person-view";
}
위 코드에서 @ModelAttribute("person")은 HTTP 요청 파라미터에서 "person" 이름으로 전달된 값을 Person 객체에 바인딩하고, person이라는 이름으로 모델에 저장한다.
===
@RequestBody는 HTTP 요청의 본문(body)에 전송된 데이터를 읽어와서 해당 메서드의 매개변수에 바인딩한다.
즉, JSON 형식으로 전송된 데이터를 자바 객체로 매핑할 수 있다.
예를 들어
@PostMapping("/person")
public void createPerson(@RequestBody Person person) {
// person 객체를 사용하여 작업 수행
}
위 코드에서 @RequestBody는 HTTP POST 요청의 본문(body)에 전송된 JSON 형식의 데이터를 Person 객체로 변환하여 매개변수에 바인딩한다.
결론은
@ModelAttribute는 HTTP 요청 파라미터를 바인딩하고
@RequestBody는 HTTP 요청 본문을 바인딩한다.
- @ModelAttribute는 HTML Form 데이터를 컨트롤러 메서드에 전달할 때 사용된다.
- @RequestBody는 RESTful API에서 JSON 형식으로 전송된 데이터를 컨트롤러 메서드에서 사용할 때 사용된다.
728x90
'공부 > 기타궁금' 카테고리의 다른 글
MP4 (MPEG-4 Part 14), M3U8 (UTF-8 M3U) (0) | 2024.06.01 |
---|---|
mysql MyISAM, InnoDB 언두 로그, 리두 로그 (0) | 2023.03.15 |
데이터 용량에 따른 크기는 어느정도일까 (0) | 2023.02.12 |
불변성(무공변성), 공변성, 반공변성 짧고 쉽게. (0) | 2023.02.11 |
데이터베이스 이중화와 클러스터링 차이점? (0) | 2023.01.30 |
댓글