https://github.com/Dev-Guccin
Guccin
https://github.com/Dev-Guccin
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 알고리즘 (140)
    • 삽질방지 (13)
    • SystemHacking (1)
    • 일상 (4)
    • 개발 (8)
    • 스프링 부트 REST API 개발일지 (5)
    • JPA (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • DP
  • 12015
  • 그리디
  • 최소힙
  • Python
  • 유니온 파인드
  • 백트래킹
  • 큐
  • 이분 탐색
  • 파이썬
  • 다이나믹 프로그래밍
  • 재귀함수
  • LIS
  • DFS
  • MST
  • 이분탐색
  • 재귀
  • 그래프
  • 프로그래머스
  • 최단경로
  • counter
  • 백준
  • python3
  • 다이나믹프로그래밍
  • 스택
  • 다익스트라
  • BFS
  • 유클리드호제법
  • 최대공약수
  • heapq

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
https://github.com/Dev-Guccin

Guccin

스프링 부트 REST API 개발일지

[SpringBoot] DTO를 어떻게 관리해야할까?

2022. 4. 5. 09:28

문제

api별로 req,res DTO들을 사용하다 보니 너무 많은 DTO를 생성하게 된다.

향후 프로젝트를 더 진행하게 되면 관리가 더 어려울 것이라 판단하여 이를 해결하고자 한다.

해결방법

Inner Class로 바꾸어 관리한다. 도메인의 이너 클래스로 관리하여 DTO 관리 편의성을 높인다.

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

public class User {

    @Getter
    @AllArgsConstructor
    @Builder
    public static class Info {
        private int id;
        private String name;
        private int age;
    }

    @Getter
    @Setter
    public static class Request {
        private String name;
        private int age;
    }

    @Getter
    @AllArgsConstructor
    public static class Response {
        private Info info;
        private int returnCode;
        private String returnMessage;
    }
}
import com.parksh.demo.dto.DefaultResponse;
import com.parksh.demo.dto.user.User;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping(“user”)
public class UserController {

    @GetMapping(“/{user_id}”)
    public User.Response getUser(@PathVariable(“user_id”) String userId) {

        return new User.Response(new User.Info(), 200, “success”);
    }

    @PostMapping
    public DefaultResponse addUser(@RequestBody User.Info info) {

        return new DefaultResponse();
    }
}

고려해볼 사항

  1. 도메인이 DTO의 형태를 알고 있게 되는건 아닌가?
  2. ⇒ DTO가 도메인의 로직에는 영향을 미치지 않아서 괜찮다.
  3. 결합도가 높아지는게 아닌가?
  4. ⇒ 위와 동일, 단 여러개의 도메인이 합쳐진 Inner Class는 지양해야한다.

래퍼런스

https://velog.io/@p4rksh/Spring-Boot에서-깔끔하게-DTO-관리하기

https://unluckyjung.github.io/dev/2022/02/20/Dto-InnerClass/

저작자표시 (새창열림)

'스프링 부트 REST API 개발일지' 카테고리의 다른 글

[Redis] 조회수를 캐시를 적용했지만 속도가 느린 문제 해결  (0) 2022.05.27
[스프링] spring MVC life cycle  (0) 2022.04.25
JWT (Json Web Token)  (0) 2022.04.05
[고민] public repository에 application.properties(.yml)의 정보를 어떻게 관리해야할까?  (0) 2022.03.11
    '스프링 부트 REST API 개발일지' 카테고리의 다른 글
    • [Redis] 조회수를 캐시를 적용했지만 속도가 느린 문제 해결
    • [스프링] spring MVC life cycle
    • JWT (Json Web Token)
    • [고민] public repository에 application.properties(.yml)의 정보를 어떻게 관리해야할까?
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin

    티스토리툴바