Spring

[Spring ] DTO 사용 시 Setter를 사용하지 않아도 되는 이유

오두기밥 2022. 5. 24. 21:19

@RequestBody에서 Setter가 필요 없는 이유

 

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

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

jojoldu.tistory.com

 


 

1. 요약

 

1) POST로 요청을 받을 경우

 

Jackson2HttpMessageConverter 내부에서 ObjectMapper를 이용해 역직렬화 하여, 객체 형태로 만들어 데이터 바인딩을 해주기 때문에  setter가 필요 없다.

직렬화: 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있는 바이트 형태로 데이터를 변환하는 기술

※ 역직렬화: 변환된 데이터를 다시 객체로 변환하는 기술

 

2) GET 으로 요청을 받을 경우

 

webdatabinder를 사용하는 데 이때  기본 값 할당 방법인 Java Bean 방식을 사용하기 때문에 자바 setter를 통해서 데이터 바인딩을 진행해야 하므로 setter가 필요하다.

 

참고

 

자바 직렬화, 그것이 알고싶다. 훑어보기편 | 우아한형제들 기술블로그

{{item.name}} 자바의 직렬화 기술에 대한 대한 이야기입니다. 간단한 질문과 답변 형태로 자바 직렬화에 대한 간단한 설명과 직접 프로젝트를 진행하면서 겪은 경험에 대해 이야기해보려 합니다.

techblog.woowahan.com

 

 

직렬화와 역직렬화 (Serializable)

[ 직렬화 ] 자바의 객체를 외부 데이터로 저장하는 것 객체화된 클래스(인스턴스)의 속성과 데이터를 파일화하여 외부에 저장할 수 있음 [ 역직렬화 ] 직렬화로 저장된 파일을 다시 자바의 객체

codevang.tistory.com