발표자료 https://www.canva.com/design/DAG7FUPqOLk/zlUQzPkfv9b4LNsqss7vaw/edit?utm_content=DAG7FUPqOLk
📝 README 파일에 팀원들이 참고할 수 있도록 임시로 작성했습니다.
읽어 보시고 프로젝트 세팅에 대해 수정하면 좋을 부분을 말씀해주세요.
테스트 코드를 기본적인 CRUD 흐름을 학습하기 위한 예제처럼 작성해봤습니다.
스프링을 처음 접하는 사람도 Controller → Service → Repository 구조와
DTO / Entity / Mapper 역할을 쉽게 이해할 수 있도록 작성되었습니다.
프로젝트 실행 방법
- 프로젝트 클론
- IntelliJ로 열기
- docker-compose.local.yml을 env 파일과 실행
- Application 실행
- localhost:8080/swagger-ui/index.html 접속
- API 테스트
민감 파일(application.yml, .env 파일 등) 관리를 서브묘듈을 통해 진행할지 아니면 여러분이 선호하는 다른 방법(ex. 노션에 적어서 관리 등)이 있는지 고민해보시고 결정하시면 됩니다.
민감 파일은 나중에 공유해드리겠습니다.
-
Git Submodule 방식
- 민감 설정 파일 전용 레포지토리를 따로 만들어 서브모듈로 연동
- 장점: 버전 관리 용이, 환경별 분리 쉬움
- 단점: 세팅이 약간 번거로움
-
외부 공유 방식 (예: Notion, Google Drive 등)
- 단순 텍스트로 관리하고 필요 시 직접 내려받아 사용
- 장점: 간단하고 접근성 높음
- 단점: 변경 이력 추적 어려움
전역적인 에러 처리는 @ControllerAdvice를 활용하여 전역적으로 관리하고 있습니다.
global/common/exception/ExceptionAdvice.java
커스텀 예외 클래스를 사용합니다.
global/common/exception/RestApiException.java
예외 처리 시에는 RestApiException에 BaseCodeInterface를 상속받은 ENUM으로 만들어진 에러 코드를 넘겨주면 됩니다.
엔티티 생성 시에는 BaseEntity를 상속받아 생성합니다.
global/common/entity/BaseEntity.java빌더 패턴 사용 시, Entity 전체에다 붙이는게 아닌 생성자에만 붙여서 생성하도록 합니다. (바뀌면 안되는 값 바뀌는 것 방지)
위키에 있는 문서를 참조바랍니다.