티스토리 뷰
현재 프로젝트는 Layered Architecture를 사용하고있고, 해당 아키텍처에 따라 패키지를 분리 했다.
패키지 구조에 대해서 크게 고민해보지 않고 관습적으로 아래와 같이 작성했다.
Layered Architecture
관심사에 따라 각 계층으로 분리하며, 각 계층은 자신의 하위 계층에만 의존하도록 설계된 아키텍처 패턴입니다
│─ controller
│─ service
│─ dto
│─ domain
사실 위와 같은 설계가 Layered Architecture를 위반하고있지는 않다.
하지만 dto는 각각에 계층별로 사용되기 때문에 프로젝트가 커지면서 패키지별로 위치를 변경 하기로 했다.
request, response dto 위치에 대해서 토론을 했었는데
그 당시에는 구조에 대해서 크게 고민을 해보지않고 팀원이 원하는 방향인 컨트롤러 하위에 두기로 했다.
│─ controller
│─ dto
│─ service
│─ domain
하지만 service 계층에서 controller 계층에 있는 dto를 의존하고있기때문에 의존성 사이클이 생기는 문제가 있다.
│─ controller
│─ service
│─ dto
│─ domain
내생각
그렇기 때문에 Layered Architecture 를 사용하는 프로젝트 구조에서는
Controller와 Service 사이에서 사용되는 request, response dto는 Service 계층에 있어야한다고 생각한다.
https://github.com/woowacourse/service-apply/tree/master/src/main/kotlin/apply/application
지원 플랫폼은 DDD Layered Architecture 구조이다.
'내생각' 카테고리의 다른 글
JPA Attribute Converter 활용 (0) | 2023.09.18 |
---|---|
Spring Boot 3, Java 17 선택 이유 (0) | 2023.09.10 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- HTTPInterface
- 레이어드 아키텍처
- User Scenario
- 유저 스토리
- dto 위치
- setDateFormat
- BasicBinder
- ValidateException
- dto 검증
- ServletContainerInitializer
- Attribute Converter
- feignClient
- org.springframework:spring-webflux
- JPA SQL Injection
- Spring Boot 3
- java 17
- entity 검증
- 구글 소셜로그인
- @ElementCollection
- DispatcherServletInitializer
- CreatedDate
- 유저 시나리오
- defer-datasource-initialization
- FormProperty
- CreationTimestamp
- 구글 OpenID
- WebFlux 의존성
- @Converter
- HandlesTypes
- @FormProperty
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함