Skip to content

Release v1.0.5 – 공통 응답코드 및 예외 핸들러 추가

Pre-release
Pre-release

Choose a tag to compare

@ryulkim ryulkim released this 05 May 10:53

📦 Release 1.0.5

Release date: 2025-05-05
Previous version: 없음


📝 Overview

Spring 기반 서비스에서 공통적으로 사용되는 예외 처리유틸 기능을 모듈화한 첫 릴리즈입니다.


🔧 설치 및 사용

Gradle에 다음 의존성을 추가하세요:

repositories {
    mavenCentral()
    // 이 부분 추가
    maven {
        url 'https://jitpack.io'
    }
}

implementation 'com.github.ryulkim:LibCC:1.0.5:plain'

예외 핸들러를 사용하고 싶다면,
SpringBootApplication에서 다음을 추가해주세요:

@SpringBootApplication(scanBasePackages = {
  "com.mycompany.app",       // 여러분 앱의 패키지
  "com.library.lib.exception"  // 모듈의 패키지
})

✨ New Features

✅ 공통 예외 처리

1. 공통 예외 핸들러 (GlobalExceptionHandler)

  • @RestControllerAdvice 기반의 예외 처리 지원
  • 발생한 예외에 대해 로그 자동 출력
    • 출력 형식:

      {Exception 클래스명}: {지정한 에러 메시지}
      

2. 공통 코드 정의

  • 제공되는 기본 에러 코드:

    SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "서버 에러가 발생하였습니다.")
  • 제공되는 기본 성공 코드:

    SUCCESS(HttpStatus.OK, "성공했습니다.")
  • 제공되는 ApiResponseEntity 형태

    • 출력 형식:

      {
        "code": "{enum_name}",
        "message": "{message}",
        "result": "{data}"
      }
    • 사용 예시:

      • 성공 응답

        ApiResponseEntity.onSuccess(Object result);
        ApiResponseEntity.onSuccess(null);
      • 실패 응답

        ApiResponseEntity.onFailure(StatusCode code);
      • 응답 커스텀

        ApiResponseEntity.from(StatusCode code, Object result);
        ApiResponseEntity.from(StatusCode code, null);

3. 사용 방법 예시

(1) 공통 예외 사용

@GetMapping
public ResponseEntity<ApiResponse<Object>> test() {
    throw new GlobalException(ErrorCode.SERVER_ERROR);
}
  • 💡 결과:
    response
    image

  • 📄 로그:
    log


(2) 에러 코드 확장

  • StatusCode를 구현한 enum을 새로 정의
@Getter
@RequiredArgsConstructor
public enum ERORORO implements StatusCode {
    TEST(NOT_FOUND, "test다. test"),
    TEST2(NOT_FOUND, "testtesttest다.");

    private final HttpStatus httpStatus;
    private final String message;

    @Override
    public String getName() {
        return this.name();
    }
}
  • 사용 예:
@GetMapping
public ResponseEntity<ApiResponse<Object>> test() {
    throw new GlobalException(ERORORO.TEST2);
}
  • 💡 결과:
    response
    image

  • 📄 로그:
    log


(3) 커스텀 예외 클래스 사용

@Getter
public class AError extends GlobalException {
    public AError(StatusCode errorCode) {
        super(errorCode);
    }
}
@GetMapping
public ResponseEntity<ApiResponse<Object>> test() {
    throw new AError(ERORORO.TEST2);
}
  • 💡 결과:
    custom

🐣 랜덤 닉네임 생성기

1. 제공 포맷

  • 형식: 형용사 + 명사
  • 형용사 예시:
    "행복한", "즐거운", "신나는", "멋진", "용감한", "친절한", "성실한", "유머러스한"...
  • 명사 예시:
    "호랑이", "고양이", "펭귄", "돌고래", "알파카", "수달", "전기뱀장어"...

2. 사용 방법

NickGenerator.generateUniqueNickname();
  • 💡 결과 예시:
    nickname
    image