Spring : Model, ModelAttribute, RequestBody

김선미·2022년 8월 30일
0

Model

  • Model은 HashMap 형태를 갖고 있으며, key, value값을 가지고 있다.
  • Spring에서 Controller의 메서드를 작성할 때는 특별하게 Model이라는 타입을 파라미터로 지정할 수 있다.
  • Model 객체는 컨트롤러에서 생성된 데이터를 담아서 전달하는 역할을 한다. 이를 이용해서 JSP와 같은 뷰(View)로 전달해야 하는 데이터를 담아서 보낼 수 있다.

@ModelAttribute

  • @ModelAttribute 애너테이션은 클라이언트가 보내는 HTTP 파라미터들을 특정 Java Object에 바인딩(맵핑) 한다. /modelattribute?name=req&age=1 같은 Query String 형태 혹은 요청 본문에 삽입되는 Form 형태의 데이터를 처리한다.
  • @ModelAttribute를 사용하면 HTTP 파라미터 데이터를 Java 객체에 맵핑한다. 따라서 객체의 필드에 접근해 데이터를 바인딩할 수 있는 생성자 혹은 setter 메서드가 필요하다.
  • Query String 및 Form 형식이 아닌 데이터는 처리할 수 없다.

@RequestBody

  • @RequestBody는 HTTP 요청 본문(JSON 및 XML 등)을 Java 오브젝트로 변환한다. HTTP 요청 본문 데이터는 Spring에서 제공하는 HttpMessageConverter를 통해 타입에 맞는 객체로 변환된다.
  • @RequestBody를 사용할 객체(예:DTO)는 필드를 바인딩할 생성자나 setter 메서드가 필요없다. 다만 직렬화를 위해 기본 생성자는 필수다. 또한 데이터 바인딩을 위한 필드명을 알아내기 위해 getter나 setter 중 1가지는 정의되어 있어야 한다.

참조

profile
백엔드 개발 공부

0개의 댓글