[Project] Spring Boot Rest API 서버 구축하기

Fortice·2021년 5월 28일
0

Project

목록 보기
5/8

기본 세팅

  • Spring Boot Set : Spring Initializr - Spring Boot 2.5.0
  • IDE : IntelliJU IDEA 2021.1.1
  • JDK : 11

Project 구조

  • 계층형 구조
    • 계층(역할)로 나누는 구조
    • 전체 구조를 파악하기 용이하지만, 디렉터리 하나에 파일이 너무 몰리게 된다.
src
└─── main
     ├─── java.com.fortice.study
     │    ├─── StudyApplication.java
     │    ├─── config
     │    ├─── controller
     │    ├─── dao
     │    ├─── domain
     │    ├─── exception
     │    └─── service
     └─── resource
          └─── application.properties
  • 도메인 구조
    • 도메인을 기준으로 나누는 구조
    • 관련된 코드가 모여있어 유지 보수에 좋지만, 프로젝트 이해도가 낮으면 전체 구조를 이해하기 힘들다.
src
└─── main
     ├─── java.com.fortice.study
     │    ├─── StudyApplication.java
     │    ├─── member
     │    │    ├─── controller
     │    │    ├─── domain
     │    │    ├─── exception
     │    │    ├─── repository
     │    │    └─── service
     │    └─── coupon
     │         ├─── controller
     │         ├─── domain
     │         ├─── exception
     │         ├─── repository
     │         └─── service
     └─── resource
          └─── application.properties

구조 선택

위와 같은 두개의 구조가 있는데, GitHub에 Spring 프로젝트를 검색해 봤다. 도메인 구조가 많은 것 같아 한번 도메인 구조를 따라보기로 했다.

src
└─── main
     ├─── java.com.fortice.study
     │    ├─── StudyApplication.java
     │    ├─── domain
     │    │    ├─── member
     │    │    │    ├─── api
     │    │    │    ├─── application
     │    │    │    ├─── dao
     │    │    │    ├─── domain
     │    │    │    ├─── dto
     │    │    │    └─── exception
     │    │    └─── model
     │    │         └─── User.java
     │    ├─── global
     │    │    ├─── common
     │    │    │    ├─── request
     │    │    │    └─── response
     │    │    ├─── config
     │    │    │    ├─── properties
     │    │    │    └─── security
     │    │    ├─── error
     │    │    │    ├─── ErrorResponse.java
     │    │    │    ├─── GlobalExceptionHandler.java
     │    │    │    └─── exception
     │    │    └─── util
     └─── resource
          └─── application.properties
  • api
    • controller 들이 여기에 포함된다.
    • controller는 ModelAndView를 리턴하기 때문에, REST API에 맞게 api로 정했다.
  • application
    • Service와 같은 도메인 객체와 외부 영역을 연결해주는 역할
    • DB의 트랜잭션 처리같은 역할을 맡는다.
  • dao
  • domain
    • 도메인 엔티티에 대한 클래스
  • dto
    • dtp, Request, Response 객체들을 포함한다.
  • model
    • Domain Entity들이 공통적으로 사용할 객체

Test DTO

profile
서버 공부합니다.

0개의 댓글