Spring Boot
스프링 네이밍 컨벤션
최-코드
2025. 3. 5. 10:28
도입 이유 : 매번 프로젝트를 진행할 때마다 스프링의 전체적이 네이밍이 조금씩 달라지는 상황이 발생하여 일관성을 맞추기 위함
컨트롤러 : 메소드명 뒤에 접미사를 붙이는 형태 사용
- getObjects() : 목록 조회 유형 메소드 -> 여러 개의 데이터 네이밍 ~~s 대신 ~~List로 통일하기
- getObjectDetails() : 단 건 상세 조회 유형 메소드
- modifyObject() : 등록/수정/삭제가 동시에 일어나는 유형 메소드
- createObject() : 등록만 하는 유형 메소드
- updateObject() : 수정만 하는 유형 메소드
- deleteObject() : 삭제만 하는 유형 메소드
서비스 : 메소드명 앞에 접두사를 붙이는 형태 사용
- getObjects() : 목록 조회 유형 메소드
- getObjectDetails() : 단 건 상세 조회 유형 메소드
- modifyObject() : 등록/수정/삭제가 동시에 일어나는 유형 메소드
- createObject() : 등록만 하는 유형 메소드
- updateObject() : 수정만 하는 유형 메소드
- deleteObject() : 삭제만 하는 유형 메소드
레포지토리
- 일반적으로 JPA 명명 규칙을 따르되 JPQL, QueryDSL를 통한 메소드명은 조금 더 자세하게 메소드명을 써준다.
- 예를 들어 QueryDSL을 통해 페이지네이션을 적용할 시에 findPagedObjectList()와 같이 생성해준다.
- 즉, jpa 명명 규칙으로 의미 전달이 부족하다고 판단되면 좀 더 자세하게 작성한다.
DTO
- dto의 네이밍은 맨 앞에 동사를 적어주는 형태를 사용하고, 서비스 메소드에서 주로 dto로 변환해주므로 서비스 메소드의 접두사를 이용하자.
- 예를 들어 createObject() 서비스 메소드에 대해 사용되는 dto는 CreateObejctRequest, CreateObjectResponse와 같이 만들어준다.
Helper Method(주된 목적에 따라 선택) : 무조건 클래스 맨 밑에 두기
- 조회 및 존재유무 검증: findBy{조건}WithLockOrThrow
- 데이터 넣기: insertObject(s) → if문 사용할 시에 ifPresent 붙이기
- 데이터 추가/삭제: modifyObject
- 데이터 삭제: deleteObject(WithAssociations)
- 연관 데이터 불러오기: getObject
- 특정 객체를 만드는 작업: buildObject
Structure
- 도메인에 대한 패키지와 전역에서 사용되는 전역 패키지를 따로 두자.
- 예를 들어 domain, global와 같이 나눌 수 있다.
- 도메인 아래에 여러 하위 도메인이 필요하면 핵심 도메인을 core로 두자.
- 예를 들어 study 도메인 아래에 댓글이 있다면 study/core, study/comment와 같이 둘 수 있다.