백엔드 프로젝트 구조 문서 - TEAM-PROJECT-ACC/trip-at-five-client GitHub Wiki

여행다섯시 - 백엔드 프로젝트 구조

작성자 : 임성준

유형

계층형

└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── demo
    │   │               ├── DemoApplication.java
    │   │               ├── config
    │   │               ├── controller
    │   │               ├── dao
    │   │               ├── domain
    │   │               ├── exception
    │   │               └── service
    │   └── resources
    │       └── application.properties

장점

  • 프로젝트에 대한 이해도가 낮아도 전반적인 구조를 빠르게 확인 가능

단점

  • 하나의 폴더 내에 너무 많은 클래스들이 모이게 됨

도메인형

└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── demo
    │   │               ├── DemoApplication.java
    │   │               ├── coupon
    │   │               │   ├── controller
    │   │               │   ├── domain
    │   │               │   ├── exception
    │   │               │   ├── repository
    │   │               │   └── service
    │   │               ├── member
    │   │               │   ├── controller
    │   │               │   ├── domain
    │   │               │   ├── exception
    │   │               │   ├── repository
    │   │               │   └── service
    │   │               └── order
    │   │                   ├── controller
    │   │                   ├── domain
    │   │                   ├── exception
    │   │                   ├── repository
    │   │                   └── service
    │   └── resources
    │       └── application.properties

장점

  • 연관 코드 별로 모여 있음

단점

  • 프로젝트에 대한 이해도가 낮을 경우 구조 파악 어려움

적용할 유형

도메인형

  • 연관 소스 코드끼리 모여 있으므로 참고할 변수나 클래스 등을 빠르게 참고할 수 있음
  • 관리하기 편함
  • 수업 때 했던 방식이므로 팀원들 전체가 익숙함
└── 📁src
    ├── 📁main
    │   ├── 📁java
    │   │   └── 📁com
    │   │       └── 📁kh
    │   │           └── 📁clock
    │   │               ├── 📁aspect (Logging)
    │   │               ├── 📁common (PageNation, File관련 등)
    │   │               ├── 📁config (WebConfig, SecurityConfig 등)
    │   │               ├── 📁interceptor
    │   │               ├── 📁admin
    │   │               │   ├── 📁controller
    │   │               │   ├── 📁domain (Entity)
    │   │               │   ├── 📁exception
    │   │               │   ├── 📁repository (DTO, DAO)
    │   │               │   └── 📁service
    │   │               ├── 📁member
    │   │               │   ├── 📁controller
    │   │               │   ├── 📁domain (Entity)
    │   │               │   ├── 📁exception
    │   │               │   ├── 📁repository (DTO, DAO)
    │   │               │   └── 📁service
    │   │               ├── 📁accommodation
    │   │               │   ├── 📁controller
    │   │               │   ├── 📁domain (Entity)
    │   │               │   ├── 📁exception
    │   │               │   ├── 📁repository (DTO, DAO)
    │   │               │   └── 📁service
    │   │               ├── 📁room
    │   │               │   ├── 📁controller
    │   │               │   ├── 📁domain (Entity)
    │   │               │   ├── 📁exception
    │   │               │   ├── 📁repository (DTO, DAO)
    │   │               │   └── 📁service
    │   │               ├── 📁payment
    │   │               │   ├── 📁controller
    │   │               │   ├── 📁domain (Entity)
    │   │               │   ├── 📁exception
    │   │               │   ├── 📁repository (DTO, DAO)
    │   │               │   └── 📁service
    │   │               ├── 📁review
    │   │               │   ├── 📁controller
    │   │               │   ├── 📁domain (Entity)
    │   │               │   ├── 📁exception
    │   │               │   ├── 📁repository (DTO, DAO)
    │   │               │   └── 📁service
    │   │               ├── 📁daily
    │   │               │   ├── 📁controller
    │   │               │   ├── 📁domain (Entity)
    │   │               │   ├── 📁exception
    │   │               │   ├── 📁repository (DTO, DAO)
    │   │               │   └── 📁service
    │   │               └── 📁chat
    │   │                  ├── 📁controller
    │   │                  ├── 📁domain (Entity)
    │   │                  ├── 📁exception
    │   │                  ├── 📁repository (DTO, DAO)
    │   │                  └── 📁service
    │   ├── 📁resources
    │   │    ├── 📁mappers
    │   │    ├── 📁properties
    │   │    ├── 📁static
    │   │    │    └── 📁assets
    │   │    │        └── 📁resources
    │   │    │            └── 📁upload
    │   │    │                ├── 📁acc
    │   │    │                └── 📁review
    │   │    └── application.properties