Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MSA 환경 서버에서 쓸 공통 라이브러리

제공되는 기능

  • JWT 생성/파싱
  • 공통 예외 핸들러
  • 공통 예외 코드 및 응답 처리
  • 랜덤 닉네임 생성

🔧 설치 및 사용

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

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

implementation 'com.github.ryulkim.LibCC:lib:v1.1.0' // JWT 외 모든 기능
implementation 'com.github.ryulkim.LibCC:jwt:v1.1.0' // JWT 관련된 기능

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

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

com.github.ryulkim.LibCC:lib:v1.1.0

✅ 공통 예외 처리

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

(4) ResponseEntity create 응답

  • ApiResponseEntity.class:
public static <T> ResponseEntity<ApiResponse<T>> create(StatusCode code, String url, T result) {
    return ResponseEntity.created(URI.create(url))
            .body(new ApiResponse<>(code.getName(), code.getMessage(), result));
}
  • 사용법 예
@GetMapping
public ResponseEntity<ApiResponse<Object>> test() {
    long resourceId=1L;

    return ApiResponseEntity.create(ERORORO.CREATE,"/located/"+resourceId, null);
}

🐣 랜덤 닉네임 생성기

1. 제공 포맷

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

2. 사용 방법

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

com.github.ryulkim.LibCC:jwt:v1.1.0

Configuration

@Configuration
public class JwtTokenProviderConfig {

    @Bean
    public JwtTokenProvider getJwtTokenProvider() {
        return new JwtTokenProvider(${secret.key}, ${access-token-expiration}, ${refresh-token-expiration});
    }
}

사용 예제

@RequiredArgsConstructor
@Service
public class AuthService {
    private final JwtTokenProvider jwtTokenProvider;

    public void test() {
        String id = jwtTokenProvider.extractIdFromToken(refreshTokenRequest.refreshToken());
    }
}

라이브러리

jitpack을 사용한 라이브러리 배포

git package로 라이브러리 배포 (구)
com.library:jwt (구)

  • JWT 생성/파싱

com.library:libcc (구)

  • 공통 예외 핸들러
  • 공통 예외 코드 및 응답 처리
  • 랜덤 닉네임 생성

목적

com.library:jwt (구)

  • gateway와 member 서버에서 jwt 토큰 생성 및 유효한지 체크를 하기 위한 목적

com.library:libcc (구)

  • 다른 서버들에서 예외 상태 코드와 응답 코드 및 공통 예외 핸들러를 쓰기 위한 목적
  • StatusCode interface를 구현하는 enum을 생성해 예외 코드 및 성공 코드 커스텀 가능

About

library common code

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages