1년 전 진행했던 마실가실 프로젝트를 🛠️리팩토링하며 정리한 내용입니다.
JWT를 사용해서 로그인과 로그아웃 구현에 성공하였으나..
Redis 추가 설정, Spring Security 추가 설정, 리팩토링 전과 후의 Controller 등..
쓰지 않거나 리팩토링 대상이 아닌 파일들을 삭제할 겸 패키지 구조도 재정비를 하였습니다.
패키지 구성 관련해서는 공부해본 적이 없어서 이참에 간단하게 정리해보고자 합니다!
패키지 구조 종류
1. 계층형
각 계층을 대표하는 디렉터리를 기준으로 패키지 구성
* 예: controller 패키지 안에 UserController, ScheduleController 등 모든 Controller가 위치
* 장점: 프로젝트에 대한 이해가 상대적으로 낮아도 전체적인 구조를 빠르게 파악할 수 있음
* 단점: 패키지에 너무 많은 클래스들이 모일 수 있음
도메인과 관련된 변경이 발생했을 경우, 여러 패키지에서 수정이 발생
2. 도메인형
도메인을 기준으로 패키지 구성
* 예: user 패키지 안에 controller, service, repository 패키지가 존재
* 장점: 관련된 코드들이 응집해 있음
도메인과 관련된 변경이 발생했을 경우, 하나의 패키지에서 수정이 발생(= 변경 범위가 적음)
* 단점: 프로젝트에 대한 이해도가 낮을 경우 전체적인 구조를 파악하기 어려움
개발자의 관점에 따라 어느 패키지에 둘지 애매한 클래스들이 존재
기존 패키지 구조
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
├─admin
│ ├─controller
│ ├─dao
│ └─service
├─api
│ └─controller
├─main
│ ├─controller
│ ├─dao
│ └─service
├─msgs
│ ├─chatbot
│ ├─dto
│ ├─entity
│ │ ├─destination
│ │ ├─review
│ │ ├─schedule
│ │ └─user
│ ├─error
│ ├─imageupload
│ ├─jwt
│ │ ├─controller
│ │ └─service
│ └─redis
├─mypage
│ ├─controller
│ ├─dao
│ ├─dto
│ └─service
├─transport
│ ├─controller
│ ├─dao
│ └─service
├─tripplace
│ ├─controller
│ ├─dao
│ └─service
├─tripschedule
│ ├─controller
│ ├─dao
│ ├─repository
│ └─service
├─tripstory
│ ├─controller
│ ├─dto
│ ├─repository
│ └─service
└─user
├─controller
├─dao
├─repository
└─service
|
변경된 패키지 구조
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
31
32
33
|
├─domain
│ ├─tripschedule
│ │ ├─controller
│ │ ├─domain
│ │ ├─dto
│ │ ├─exception
│ │ ├─repository
│ │ └─service
│ ├─tripstory
│ │ ├─controller
│ │ ├─domain
│ │ ├─dto
│ │ ├─exception
│ │ ├─repository
│ │ └─service
│ └─user
│ ├─controller
│ ├─domain
│ ├─dto
│ ├─exception
│ ├─repository
│ └─service
├─global
│ ├─common
│ │ ├─error
│ │ ├─jwt
│ │ ├─model
│ │ └─redis
│ ├─config
│ └─util
└─infra
├─chatbot
└─imageupload
|
🙋♀️
본 포스트는 공부 목적으로 작성하였습니다.
보시는 도중 잘못된 부분이나 개선할 부분이 있다면 댓글로 알려주시면 수정하도록 하겠습니다.
📑
참고 자료
'PlayGround > 마실가실 리팩토링' 카테고리의 다른 글
[1년 후 마실가실] JWT와 로그아웃(2) RefreshToken (1) | 2024.09.14 |
---|---|
[1년 후 마실가실] 쉬어가는 마실가실 - SonarQube (2) | 2024.09.08 |
[1년 후 마실가실] 쉬어가는 마실가실 - 디버깅 (0) | 2024.08.26 |
[1년 후 마실가실] JWT와 로그아웃(1) Redis 설정 (4) | 2024.08.23 |
[1년 후 마실가실] Spring Security, JWT 공부 (0) | 2024.08.11 |