< 기존에 했었던 개인 프로젝트의 directory structure >
이전에 혼자 공부하며 진행했던 스프링 프로젝트이다. 크게 config - src - utils 로 나누고, config는 통합 json response 및 exception 등을, src 도메인 단위로 controller - service - dao 를 가지도록, utils는 jwt, validation 등을 가지도록 하였다.
스프링 동작 원리에 대해 잘 알지 못하지만, 이번 프로젝트에서도 위 구조를 그대로 쓰기 보다는 구글링을 조금 더 해보고, 일반적으로 더 많이 쓰이는 컨벤션이 있는지, 이유가 있다면 왜인지 더 알고 싶어서 깃허브와 구글을 찾아보았다.
https://github.com/woowacourse-teams
woowacourse-teams
woowacourse-teams has 22 repositories available. Follow their code on GitHub.
github.com
https://github.com/cheese10yun/spring-guide
GitHub - cheese10yun/spring-guide: Spring 실전 가이드
:octocat: Spring 실전 가이드. Contribute to cheese10yun/spring-guide development by creating an account on GitHub.
github.com
https://www.popit.kr/spring-guide-directory-%EA%B0%80%EC%9D%B4%EB%93%9C/
Spring Guide - Directory 가이드 | Popit
해당 코드는 Github 를 확인해주세요. Spring Guide Test 전략 가이드 Exception 전략 가이드 Domain 객체 가이드 외부 API 가이드 Service 적절한 크기 가이드 Directory 가이드 패키지 구성은 크게 레이어 계층형
www.popit.kr
토글에 첨부한 링크의 프로젝트들을 전부 뜯어보며 directory structure를 살펴보았는데....스프링 동작 원리에 대해 잘 알지 못하니 정작 왜 그런지 알 수가 없었다.
'웹/도메인 주도 설계 (Domain Driven Development)' 카테고리의 글 목록
my-codinglog.tistory.com
구글링 하다보니 Domain Driven Development 라는 개념에 도달했는데, 일단 참고할 만한 링크만 남겨두고 나중에 꼭 이론에 대해서도 포스팅 해야겠다. 일단 여러 참고자료들의 적당한 절충안을 찾아 프로젝트 구조를 잡아 시작하기로 하였다.
2022.01.16. 이번에도 난관에 봉착했다...팀원 셋 중 프로젝트를 처음부터 설계해 본 팀원이 없었고, 나도 열심히 찾아보았으나 큰 단위의 프로젝트를 다뤄본 적이 없으니
- Service 인터페이스와 구현체, 인터페이스는 꼭 존재해야 하는 것인가?
- Service class 를 만들 때 단순히 UserService 와 같이 작성하면 되는 것 아닌가? 동작을 중심으로 UserSignUpService 와 같이 적는다면, 이에 대한 효용? 얻는 이점은? 실제로 이렇게 많이 적는지?
- Controller - Service - Repository 자체를 하나의 폴더 밑으로 넣는 것과(xxxController, xxxService, xxxRepository 방식), 각 layer 별로 폴더를 만들어서 여러 개의 controller, service, repository 를 갖게 하는 것의 차이는?
이러한 고민사항에 대해 속 시원한 답을 도출해낼 수가 없었다.
첫 설계부터 탄탄하게 쌓은 채로 시작한다면 정말 좋겠지만 언제까지고 스켈레톤 설계에만 매달릴 수도 없기 때문에, 일단 가장 단순한 형태 Controller - Service - Repository 를 하나씩 갖도록 구현을 시작한 후, 클래스를 더 세분화하여 나눠야하는 필요성을 알게 되는 시점이 온다면 추후 수정하기로 결정하였다.
'Spring > Coding Convention' 카테고리의 다른 글
Nested Class 에 언제 static 을 붙여야 할까? (0) | 2022.07.13 |
---|---|
DTO 는 어떻게 구성하고, 변환해야 할까? (0) | 2022.07.13 |
DTO 를 사용해야 하는 이유 (0) | 2022.07.11 |
댓글