티스토리 뷰

ETC

[ETC] 스프링 도메인 프로젝트 구조 (예시1)

주인장 진빼이

요즘 개발 패러다임은 DDD가 대세가 아닌가 ?

DDD가 무조건 좋다곤 볼 수 없지만 기존 스프링을 공부하면서

진행해온 프로젝트 구조는 계층형이었는데

구조가 커질 수록 어디에 어떤 도메인에 관련된 Controller 가 있는지 알 수 없었다.

 

그리고

IDE 폴더 탐색기에서 찾는 것보다 InteliJ 빠른 파일 찾기 기능을 이용하는 것이 훨씬 도움이 될 것이다.

Controller 키워드 몇개만 던지면 자동으로 모든 컨트롤러가 보여서 정말 편리하다.

(이 기능을 이용해서만 오로지 찾는다면 폴더 구조가 의미가 있을까?)

사진1: 인텔리제이 빠른 파일 찾기 기능

프로젝트를 진행하면서 간단한 예제를 보고 따라 가는 경우가 많은데

경험이 적다보면 대다수 계층형 프로젝트 구조를 사용하게 된다.

요즘은 도메인 중점 개발패러다임이 들어오면서 많은 프로젝트, 서비스들이 도메인 중점으로 구현되어가고 있다.

 

운이 좋게도 과거엔 구하기 힘들었던 프로젝트 구조도 쉽게 구할 수 있었다.

다시 한번 이 정보를 공유해주신 cheese10yun님께 감사를 표합니다.

└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── spring
    │   │           └── guide
    │   │               ├── ApiApp.java
    │   │               ├── SampleApi.java
    │   │               ├── domain
    │   │               │   ├── coupon
    │   │               │   │   ├── api
    │   │               │   │   ├── application
    │   │               │   │   ├── dao
    │   │               │   │   ├── domain
    │   │               │   │   ├── dto
    │   │               │   │   └── exception
    │   │               │   ├── member
    │   │               │   │   ├── api
    │   │               │   │   ├── application
    │   │               │   │   ├── dao
    │   │               │   │   ├── domain
    │   │               │   │   ├── dto
    │   │               │   │   └── exception
    │   │               │   └── model
    │   │               │       ├── Address.java
    │   │               │       ├── Email.java
    │   │               │       └── Name.java
    │   │               ├── global
    │   │               │   ├── common
    │   │               │   │   ├── request
    │   │               │   │   └── response
    │   │               │   ├── config
    │   │               │   │   ├── SwaggerConfig.java
    │   │               │   │   ├── properties
    │   │               │   │   ├── resttemplate
    │   │               │   │   └── security
    │   │               │   ├── error
    │   │               │   │   ├── ErrorResponse.java
    │   │               │   │   ├── GlobalExceptionHandler.java
    │   │               │   │   └── exception
    │   │               │   └── util
    │   │               └── infra
    │   │                   ├── email
    │   │                   └── sms
    │   │                       ├── AmazonSmsClient.java
    │   │                       ├── SmsClient.java
    │   │                       └── dto
    │   └── resources
    │       ├── application-dev.yml
    │       ├── application-local.yml
    │       ├── application-prod.yml
    │       └── application.yml
├── domain
│   ├── member
│   │   ├── api
│   │   │   └── MemberApi.java
│   │   ├── application
│   │   │   ├── MemberProfileService.java
│   │   │   ├── MemberSearchService.java
│   │   │   ├── MemberSignUpRestService.java
│   │   │   └── MemberSignUpService.java
│   │   ├── dao
│   │   │   ├── MemberFindDao.java
│   │   │   ├── MemberPredicateExecutor.java
│   │   │   ├── MemberRepository.java
│   │   │   ├── MemberSupportRepository.java
│   │   │   └── MemberSupportRepositoryImpl.java
│   │   ├── domain
│   │   │   ├── Member.java
│   │   │   └── ReferralCode.java
│   │   ├── dto
│   │   │   ├── MemberExistenceType.java
│   │   │   ├── MemberProfileUpdate.java
│   │   │   ├── MemberResponse.java
│   │   │   └── SignUpRequest.java
│   │   └── exception
│   │       ├── EmailDuplicateException.java
│   │       ├── EmailNotFoundException.java
│   │       └── MemberNotFoundException.java
│   └── model
│       ├── Address.java
│       ├── Email.java
│       └── Name.java

참고: https://cheese10yun.github.io/spring-guide-directory/

아래 사이트로 들어가면 더 많은 폴더 구조를 볼 수 있다.

 

Spring Guide - Directory - Yun Blog | 기술 블로그

Spring Guide - Directory - Yun Blog | 기술 블로그

cheese10yun.github.io

인프라(infgra) 글로벌(global) 및 설정(config) 까지 별도로 빠져 있어서

좋은 폴더 구조인 것으로 보인다.

 

좋은건 나눠보고 정보를 아낌없이 공유하자.

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함