[레거시 코드 리팩토링 - 4단계] 오찌(오지훈) 미션 제출합니다. #418
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
안녕하세요 디우 :) 멀티 모듈 분리는 크게 커밋을 많이 할 일이 없어서 금방 하게 되었네요!
MSA 환경도 아니고, 도메인 컨텍스트 별로 모듈을 나눠야 할 정도로 큰 프로젝트도 아니라고 생각해서 계층 별로 모듈을 나누어보았습니다 :)
kitchenpos-core
도메인과 레포지토리가 모여 있는 코어 모듈입니다. 웹 계층이나 서비스 계층에 대한 의존성은 전혀 가지고 있지 않으며, 가지고 있는 의존성은 레포지토리와 엔티티를 구성하기 위한 spring-data-jpa 의존성 뿐입니다. 여러 예외 클래스 중 도메인에서 발생하는 예외 클래스도 이곳에 모여 있습니다. 3단계 결과 레포지토리를 반드시 거쳐야 하는 validation 로직(menuRepository에 menu가 존재해야 한다든가 하는)을 제외하고는 모든 validation 로직이 이곳에 모여 있어 완전한 도메인을 생성할 수 있게 되었기 때문에 다른 모듈들에서 재사용하기 용이합니다.
kitchenpos-external-api
서비스와 컨트롤러, 그에 따라 dto까지 함께 모여 있는 모듈입니다. 서비스가 이곳에 있는 것은, 결국 서비스 레이어 자체가 들어온 api 요청에 맞게 도메인을 가공하고 dto로 조립하는 계층이기 때문에 api라는 모듈 의미에 맞추어 이곳에 넣었습니다. kitchenpos-core 모듈을 의존하며, 서비스에서 생성되는 예외들은 이 모듈에 들어있습니다.
파일 체인지가 많지만 크게 많이 바뀐 부분은 없습니다 :) 잘 부탁드려요!