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;
}
// 멀쩡하게 잘 작동한다.
그 이유는 위 링크에 상세하게 나와있다.
간략하게 요약 하자면
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 |
댓글