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 |
댓글