PATCH 메서드를 요청받는 DTO 객체에는 getter와 setter 모두 작성한다.
그렇다면, GET, POST 메서드 요청을 받는 DTO 객체도 동일하게 구현하는가?
간단히 요약하면 다음과 같다.
- GET 메서드 요청 시,
GET 요청의 경우는 JSON 형태의 데이터가 아닌 Query Parameter이다.
그래서, Jackson2HttpMessageConverter를 사용하지 않는다.
이 경우에는 WebDataBinder를 사용한다.
즉, GET 요청의 경우에는 별도의 설정이 따로 없다면, Spring에서는 WebDataBinder의 기본 값 할당 방법인 Java Bean 방식을 사용하기 때문에, setter가 없으면 작동하지 않는다.
그러나, GET 요청의 경우에도 setter를 사용하지 않을 수 있는 방법이 존재한다.
initDirectFieldAccess 메서드를 사용하는 것이다.
자세한 사용법은 따로 구글링이나 아래의 참조 자료를 확인하면 좋을 것 같다.
- POST 메서드 요청 시,
@RequestBody로 JSON 형태의 데이터가 넘어오면,
이 데이터를 Jackson2HttpMessageConverter가 Java Object로 변환해준다.
이때 Converter에서는 ObjectMapper를 사용해서 Object로 전환해준다.
ObjectMapper가 전환을 해주니까, setter가 없어도 작동한다.
Ref)
'Develop > Spring' 카테고리의 다른 글
JPA(Java Persistence API)와 엔티티 매핑(Entity Mapping) (0) | 2022.11.01 |
---|---|
Spring MVC - API 계층 (0) | 2022.10.30 |
Spring MVC 요청 및 응답 동작 과정 (0) | 2022.10.21 |
Assert.assertTrue(); 안됨 해결 (0) | 2022.07.28 |
@Autowired 란? (0) | 2022.07.27 |