API 개발 중 API 마다 return 해주는 데이터가 달라 각각의 DTO를 생성하다보면 많은 DTO가 생성되어 소스들이 아주 정신없을 때가 있다
각각의 DTO를 생성하다보면 수정사항이 있어도 다른 API에 영향이 가지 않는다는 장점이 있지만 클래스가 너무 많아져 관리가 힘들어 질수 있음
User 도메인에 관련된 API에서 각각 사용되는 DTO를 하나의 파일로 묶어보았다
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
public class UserDto {
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class CommonInfo {
private String userId;
private String userNm;
private int userAge;
private String userNickNm;
private String userGender;
}
@Data
@Builder
public static class Create extends CommonInfo {
private String userPw;
}
@Data
@Builder
public static class Info extends CommonInfo {
private int userNo;
private Date regTm;
}
@Data
@Builder
public static class Update extends CommonInfo {
private int userNo;
}
@Data
public static class Delete {
private int userNo;
}
}
CommonInfo 를 통해서 공통적으로 사용하는 field를 묶은 뒤 각각의 용도에 맞는 DTO를 생성해 CommonInfo 상속받는 형태로 만들어보았다
이런 형태로 하나의 DTO에 각각의 목적에 맞는 inner class를 넣어 간결하게 프로젝트를 유지 할 수 있다