본문 바로가기
Develop/Spring

GET, POST 메서드 요청 시, DTO 객체에는 setter가 필요한가?

by jaeyoungb 2022. 10. 23.

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)

https://jojoldu.tistory.com/407

'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