@ModelAttribute, @RequestBody

2023. 6. 26. 17:20·Spring
728x90

 

 

 

 

@RequestBody와 @ModelAttribute는 클라이언트 측에서 보낸 데이터를 Java 코드에서 사용할 수 있는 오브젝트로 만들어주는 공통점이 있다.

 

하지만 이 두 애너테이션은 세부 수행 동작에서 큰 차이를 보인다.

 

 

@RequestBody

클라이언트가 보내는 HTTP 요청 본문(JSON 및 XML 등)을 Java 오브젝트로 변환하는 것.

HTTP 요청 본문 데이터는 Spring에서 제공하는 HttpMessageConverter를 통해 타입에 맞는 객체로 변환된다.

 

 

1. @RequestBody를 사용하면 요청 본문의 JSON, XML, Text 등의 데이터가 적합한 HttpMessageConverter를 통해 파싱되어 Java 객체로 변환 된다.


2. @RequestBody를 사용할 객체는 필드를 바인딩할 생성자나 setter 메서드가 필요없다.

3. 다만 직렬화를 위해 기본 생성자는 필수다.


4. 또한 데이터 바인딩을 위한 필드명을 알아내기 위해 getter나 setter 중 1가지는 정의되어 있어야 한다.

 

 

 

@ModelAttribute 

클라이언트가 보내는 HTTP 파라미터들을 특정 Java Object에 바인딩(맵핑) 하는 것.

/modelattribute?name=req&age=1 같은 Query String 형태 혹은 요청 본문에 삽입되는 Form 형태의 데이터를 처리한다.

 

1. @ModelAttribute를 사용하면 HTTP 파라미터 데이터를 Java 객체에 맵핑한다.

2. 따라서 객체의 필드에 접근해 데이터를 바인딩할 수 있는 생성자 혹은 setter 메서드가 필요하다.


3. Query String 및 Form 형식이 아닌 데이터는 처리할 수 없다.

 

 

 

요약

@ModelAttribute는 Http 요청 파라미터(URL 쿼리 스트링, POST Form)를 다룰 때 사용한다.

@RequestBody는 Http Body의 데이터를 객체로 변환할 때 사용한다. 주로 API JSON 요청을 다룰 때 사용한다.

 

728x90

'Spring' 카테고리의 다른 글

쿠키와 보안문제  (0) 2023.06.27
로그인 처리 (쿠키)  (0) 2023.06.27
메시지, 국제화  (1) 2023.06.16
주요 annotation  (0) 2023.06.07
Thymeleaf  (0) 2023.06.05
'Spring' 카테고리의 다른 글
  • 쿠키와 보안문제
  • 로그인 처리 (쿠키)
  • 메시지, 국제화
  • 주요 annotation
minseououo
minseououo
    250x250
  • minseououo
    StudyRepository
    minseououo
  • 전체
    오늘
    어제
    • 분류 전체보기 (97)
      • 인버터 (4)
      • 자동차 (26)
      • 모터 (3)
      • 검증 (2)
      • Spring (46)
      • 프로젝트 (1)
      • 인공지능 (2)
      • 운영체제 (5)
      • Algorithm (2)
      • 소프트웨어공학 (5)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자동차 통신
    AUTOSAR
    single-wire 통신
    park변환
    hils 검증
    bsw
    SDV
    java
    clarke변환
    ISO26262
    ASPICE
    자바
    약계자제어
    자동차
    자동차 신차 개발 프로세스
    sae j2716
    mtpa
    백앤드
    모터제어
    dq변환
    Spring
    ASW
    전류 제한원
    자동차 네트워크
    autosar architecture
    sys그룹
    스프링
    자율주행
    v-cycle
    sent 통신
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
minseououo
@ModelAttribute, @RequestBody
상단으로

티스토리툴바