필수 입력 데이터 미입력시에 대한 예외 처리 - tjdwns4537/mybatis-practice GitHub Wiki
RestControllerAdvice, ExceptionHandler
LoginErrorCode에 대한 enum class 생성
- 공통된 에러 타입을 응답할 수 있게 해주기 위함
public enum LoginErrorCode {
DataIntegrityViolationException(400, HttpStatus.BAD_REQUEST,"you should input data");
private int code;
private HttpStatus httpStatus;
private String description;
private LoginErrorCode(int code, HttpStatus httpStatus, String description) {
this.code = code;
this.httpStatus = httpStatus;
this.description = description;
}
public int getCode() {
return code;
}
public HttpStatus getHttpStatus() {
return httpStatus;
}
public String getDescription() {
return description;
}
}
LoginAdvice
- RestControllerAdvice(패키지명) 을 통해서 특정 패키지에서 발생하는 컨트롤러 예외를 캐치
- ExceptionHandler를 통해 예외 처리 메소드 작성
@RestControllerAdvice("kia.com.mybatistest.member.controller")
public class LoginAdvice {
@ExceptionHandler(DataIntegrityViolationException.class)
public ResponseEntity<LoginResponse> emptyDataError() {
LoginResponse loginResponse = LoginResponse.builder()
.code(LoginErrorCode.DataIntegrityViolationException.getCode())
.httpStatus(LoginErrorCode.DataIntegrityViolationException.getHttpStatus())
.message(LoginErrorCode.DataIntegrityViolationException.getDescription()).build();
return new ResponseEntity<>(loginResponse, loginResponse.getHttpStatus());
}
}
LoginResponse
- 응답 메세지 처리를 위한 공통된 클래스 생성
- 동적인 처리를 위해 빌더 패턴 적용
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class LoginResponse {
private int code;
private HttpStatus httpStatus;
private String message;
}