[Spring] DTO 생성 시 애노테이션

FE.1·2024년 3월 6일
0
post-thumbnail

직렬화와 역직렬화하는 과정은 모두 Jackson 내부에 있는 ObjectMapper리플랙션을 사용하는 것이다.

  • 값을 설정해야 하므로 Setter가 필요하다고 생각했지만, 아니었다.
  • 직렬화된 요청을 받아 역직렬화하려면
    • getter, setter 둘 중 하나만 써도 된다. 기본 생성자는 필요 O
  • 응답을 직렬화하여 보내려면
    • getter만 가능하고, setter는 불가능하다. 기본 생성자는 필요 X

Request (서버는 역직렬화 수행, 클라이언트 → 서버, JSON → Java Object)

  • @Getter || @Setter
  • @NoArgsConstructor(private)

💡 JSON이 아닌 x-www-form-urlencoded 데이터 형식의 request DTO를 받고 싶다면,
@Setter도 추가하자! 혹은 생성자나 생성자+빌더

Response (서버는 직렬화 수행, 서버 → 클라이언트, Java Object → JSON)

  • @Getter
  • @AllArgsConstructor || @RequiredArgsConstructor

Request DTO 생성 시 생성자 인자가 하나일 경우에는 위임이 안된다. (앞서 말한 것들이 적용 X)

이때는 @JsonCreator를 사용하자.

public class UserDto {

	private final String name;
	
	@JsonCreator
	public UserDto(String name){
		this.name = name;
	}
}
profile
공부하자!

0개의 댓글