SpringMvc 도메인 주도 설계 프로젝트 구조 두 번째 개선

기존에, FrontControllerServlet 아키텍쳐에서 SpringMvc 아키텍쳐로 전환하면서, 프로젝트 구조를 도메인 주도 설계 구조로 전환한 바 있다.

하지만, 이를 한 번 더 도메인 주도 설계에 맞게 구조를 변경하였다. domain 패키지는 웹 기술(스프링, 타임리프 등)이 변경되어도, 변경되지 않도록, controller, validation 패키지를 web 이라는 패키지 아래로 이동시켰다.

2차 변경된 프로젝트 구조

├── java
│   └── com
│       └── weblibrary
│           ├── ServletInitializer.java
│           ├── TestInit.java
│           ├── WebLibraryApplication.java
│           ├── domain
│           │   ├── admin
│           │   │   ├── model
│           │   │   │   ├── Role.java
│           │   │   │   └── RoleType.java
│           │   │   ├── repository
│           │   │   │   ├── MemoryUserRoleRepository.java
│           │   │   │   └── UserRoleRepository.java
│           │   │   └── service
│           │   │       └── AdminService.java
│           │   ├── book
│           │   │   ├── exception
│           │   │   │   └── NotFoundBookException.java
│           │   │   ├── model
│           │   │   │   ├── Book.java
│           │   │   │   └── dto
│           │   │   │       ├── BookRentDto.java
│           │   │   │       ├── ModifyBookDto.java
│           │   │   │       └── NewBookDto.java
│           │   │   ├── repository
│           │   │   │   ├── BookRepository.java
│           │   │   │   └── MemoryBookRepository.java
│           │   │   └── service
│           │   │       └── BookService.java
│           │   └── user
│           │       ├── dto
│           │       │   ├── JoinUserDto.java
│           │       │   ├── LoginUserDto.java
│           │       │   └── SetUserDto.java
│           │       ├── model
│           │       │   └── User.java
│           │       ├── repository
│           │       │   ├── MemoryUserRepository.java
│           │       │   └── UserRepository.java
│           │       └── service
│           │           └── UserService.java
│           └── web
│               ├── AccessDeniedController.java
│               ├── WebConfig.java
│               ├── admin
│               │   └── controller
│               │       ├── AdminBookController.java
│               │       ├── AdminPageController.java
│               │       └── AdminUsersController.java
│               ├── book
│               │   └── validation
│               │       ├── BookAddValidator.java
│               │       ├── BookModifyValidator.java
│               │       ├── BookRentValidator.java
│               │       └── BookUnRentValidator.java
│               ├── exception
│               │   ├── InterceptorExceptionHandler.java
│               │   └── UnauthorizedAccessException.java
│               ├── interceptor
│               │   ├── RestAdminCheckInterceptor.java
│               │   ├── RestLoginCheckInterceptor.java
│               │   ├── SsrAdminCheckInterceptor.java
│               │   └── SsrLoginCheckInterceptor.java
│               ├── response
│               │   ├── ErrorResponse.java
│               │   └── JsonResponse.java
│               ├── user
│               │   ├── controller
│               │   │   ├── AccountController.java
│               │   │   ├── IndexController.java
│               │   │   └── UserBookController.java
│               │   └── validation
│               │       ├── JoinValidator.java
│               │       └── LoginValidator.java
│               └── validation
│                   ├── FieldValidationHandler.java
│                   └── ValidationUtils.java
└── resources
    ├── application.properties
    ├── errors.properties
    ├── messages.properties
    ├── messages_en.properties
    ├── static
    │   ├── css
    │   │   ├── access-denied.css
    │   │   ├── admin.css
    │   │   ├── bootstrap.min.css
    │   │   ├── error.css
    │   │   └── index.css
    │   └── js
    │       ├── book.js
    │       ├── common.js
    │       ├── manageBook.js
    │       ├── manageMember.js
    │       ├── rent.js
    │       ├── user.js
    │       └── util.js
    └── templates
        ├── access-denied.html
        ├── admin
        │   ├── book.html
        │   ├── index.html
        │   └── user.html
        ├── css
        │   ├── access-denied.css
        │   ├── bootstrap.min.css
        │   └── index.css
        ├── home
        │   ├── index.html
        │   ├── join.html
        │   └── login.html
        └── layout
            ├── admin.html
            └── common.html

댓글

개발자  김철준

백엔드 개발자 김철준의 블로그입니다.

주요 프로젝트