https://naver.github.io/hackday-conventions-java/
- record 타입 사용시 해당 recood 타입을 사용할 때 new 대신 static method(of, from ...) 를 사용
- record 타입 뿐만 아니라 모든 상황에서 new 키워드 사용 자제(자제 라는 단어가 convention과 어울리는지는 모르겠으나 추후 리팩터링할때 new 씨를 말릴겁니다.)
예시
Feat: #issue Oauth 기능 구현
[Feat]: 새로운 기능 구현
[Fix]: 버그, 오류 해결, 코드 수정
[Add]: Feat 이외의 부수적인 코드 추가
[Del]: 쓸모없는 코드, 주석 삭제
[Refactor]: 전면 수정이 있을 때 사용합니다
[Remove]: 파일 삭제
[Rename]: 파일 이동 및 이름 수정
[Chore]: 그 이외의 잡일/ 버전 코드 수정, 패키지 구조 변경, 파일 이동, 파일이름 변경
[Docs]: README나 WIKI 등의 문서 개정
[Setting]: 프로젝트 관련 세팅
Springboot 3.2.2
MySQL 8.0
aws EC2
aws RDS
aws S3
aws Cloudfront
OAuth{애플, 카카오, 구글}
Discord - 오류 및 어드민 알림용
ChatGPT - 사진 생성 프롬프트 Upgrade
Firebase - 앱 푸시알림
1 Level의 CQRS 패턴을 적용 (CUD / R 분리)
JPA의 더티 체킹 등 강력한 기능을 활용하기 위해
도메인 엔티티와 JPA 엔티티를 분리하진 않았음
- [UseCase] CQRS 적용을 위해 CUD는 UseCase, R은 Query로 네이밍.
- [Port] CQRS 적용을 위해 CUD는 {Something}StatePort, R은 Load{Something}Port로 네이밍
- UseCase(Query) 끼리 참조해야할때는 Service에서 UseCase를 참조한다.
- Command와 Dto 분리 - Dto로 Command를 생성하는 것이 보통이다.
- [Dto]외부에 응답하거나, 간단한 데이터를 전달, 혹은 Client로부터 Controller 레이어에서 값을 받아오는 경우는 Dto
- [Command] Controller layer 에서 Service layer로 값을 전달해야 하는 경우 Command로 네이밍,
- Domain/Jpa Entity는 구분하지 않고 JpaEntity만 우선 사용한다.