본문 바로가기
기술/Spring-Boot

@RequestBody는 왜 Setter가 없어도 작동할까?

by Zabee52 2021. 11. 24.

 

 

 

POST 타입의 요청을 처리할 때, @RequestBody 어노테이션이 선언된 파라미터에는 Setter 선언을 해주지 않아도 된다.

@PostMapping("/board/post")
@ResponseBody
public Board posting(@RequestBody BoardDto boardDto) {
    return boardService.posting(boardDto);
}
@Getter
public class BoardDto {
    private String title;
    private String author;
    private String content;
}

// 멀쩡하게 잘 작동한다.
 

@Request Body에서는 Setter가 필요없다?

회사에서 근무하던중 새로오신 신입 개발자분이 저에게 하나의 질문을 했습니다. POST 요청시에 Setter 가 필요없는것 같다고. 여태 제가 알던것과는 달라서 어떻게 된 일인지 궁금했습니다. 정말

jojoldu.tistory.com

 

그 이유는 위 링크에 상세하게 나와있다.

 

간략하게 요약 하자면

 

1. 스프링에서는 JSON 형변환을 담당하는 Jackson2HttpMessageConverter가 @RequestBody로 받아온 값을 Java Object로 변환을 해준다.

2. 이 때, 변환을 할 때 사용해주는게 ObjectMapper이다.

3. ObjectMapper로 한 방에 역직렬화(Deserialize) 해버리기 때문에 Setter가 필요가 없다.

 

* Get 방식에서의 파라미터는 WebDataBinder가 담당하게 되는데, 이 클래스는 Setter를 통해 값을 할당하는 Java Bean 방식을 사용하기 때문에 Setter 선언을 해줘야 한다.

'기술 > Spring-Boot' 카테고리의 다른 글

@Controller는 뭘까?  (0) 2021.11.26
Controller는 뭘 하는 녀석일까?  (0) 2021.11.26
항해99 11/19(금) 스프링 TIL  (0) 2021.11.19
항해99 11/18(목) 스프링 TIL  (0) 2021.11.18
항해99 11/16(화) 스프링 TIL  (0) 2021.11.17

댓글