- 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" // 모듈의 패키지
})@RestControllerAdvice기반의 예외 처리 지원- 발생한 예외에 대해 로그 자동 출력
-
출력 형식:
{Exception 클래스명}: {지정한 에러 메시지}
-
-
제공되는 기본 에러 코드:
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);
-
-
(1) 공통 예외 사용
@GetMapping
public ResponseEntity<ApiResponse<Object>> test() {
throw new GlobalException(ErrorCode.SERVER_ERROR);
}(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);
}(3) 커스텀 예외 클래스 사용
@Getter
public class AError extends GlobalException {
public AError(StatusCode errorCode) {
super(errorCode);
}
}@GetMapping
public ResponseEntity<ApiResponse<Object>> test() {
throw new AError(ERORORO.TEST2);
}(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);
}- 형식: 형용사 + 명사
- 형용사 예시:
"행복한", "즐거운", "신나는", "멋진", "용감한", "친절한", "성실한", "유머러스한"... - 명사 예시:
"호랑이", "고양이", "펭귄", "돌고래", "알파카", "수달", "전기뱀장어"...
NickGenerator.generateUniqueNickname();@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을 생성해 예외 코드 및 성공 코드 커스텀 가능








