*Request*DtoCursorPageResponse*코드 들여쓰기 방식
주석 스타일
// 한 줄 주석으로 작성코드 구성 순서
Lombok 사용 규칙
로그 출력 방식
log.info("회원 ID: {}", userId); 형식 통일패키지 구조
com.example.myproject
├── global ← 전역 사용 항목
│ ├── config
│ │ └── SwaggerConfig.java
│ ├── exception
│ │ └── GlobalExceptionHandler.java
│ ├── dto # 전역에서 사용되는 DTO가 있다면 (PageResponse, ErrorResponse 등)
│ ├── util # 유틸 클래스들 (DateUtil, StringUtil 등)
│ └── base # 공통 엔티티(BaseEntity), 공통 응답 클래스 등
├── domain ← 도메인별 기능 모듈
│ ├── user
│ │ ├── controller
│ │ │ ├── api
│ │ │ └── UserController.java
│ │ ├── service
│ │ ├── repository
│ │ ├── entity
│ │ ├── mapper
│ │ └── dto
│ │ └── data
│ │ └── request
│ └── notification
│ ├── controller
│ ├── service
│ ├── repository
│ ├── entity
│ ├── mapper
│ └── dto
└── Application.java
예외 처리 기준
예외 처리는 service 계층에서 수행
Controller에서는 예외를 던지고, 전역 예외 처리(@RestControllerAdvice)에서 공통 응답 처리
공통 응답 예시
{
"timestamp": "2025-03-06T05:39:06.152068Z",
"status": 400,
"message": "잘못된 요청입니다.",
"details": "부서 코드는 필수입니다."
}
classDiagram
class RuntimeException
class BaseException {
<<abstract>>
+Instant timestamp()
+String getMessage()
+String getDetails()
+HttpStatus getHttpStatus()
}
class CustomException {
}
BaseException --|> RuntimeException
CustomException --|> BaseException
MissingRequestHeaderExceptionInvalidRequestExceptionAuthenticationExceptionInvalidQueryParameterExceptionFileIOException