똑같은 삽질은 2번 하지 말자

Spring Boot에서 전역 에러 핸들러 등록(@ControllerAdvice, @RestControllerAdvice, @ExceptionHandler) 본문

Spring/Spring Boot

Spring Boot에서 전역 에러 핸들러 등록(@ControllerAdvice, @RestControllerAdvice, @ExceptionHandler)

곽빵 2020. 9. 2. 23:44

@ControllerAdvice, @RestControllerAdvice

둘다 @Component이기 때문에 자동으로 빈으로 등록되며, 

 

기본적인 차이는 @Controller <-> @RestController 의 차이와 비슷하다고 생각한다.

 

ArrayIndexOutOfBoundsException이 발생하면 내가 만든 커스텀 핸들러로 처리를 한다.

 

AppError 객체는 에러내용을 담기위해 임시로 만들어준 클래스

@RestControllerAdvice
public class GlobalExceptionController {
	@ExceptionHandler(ArrayIndexOutOfBoundsException.class)
	public ResponseEntity<Object> AIOOBHandler(ArrayIndexOutOfBoundsException e) {
		AppError appError = new AppError();
		appError.setCode("AIOO");
		appError.setMessage("ArrayIndexOutOfBoundsException");
		System.out.println("ArrayIndexOutOfBoundsException");
		return new ResponseEntity<Object>(appError,HttpStatus.BAD_REQUEST);
	}
}
@Data
public class AppError {
	private String code;
	private String message;
}
Comments