스프링부트에서는 @ControllerAdvice와 @ExceptionHandler 어노테이션을 사용하여 전역적인 예외 처리를 할 수 있습니다. 이를 통해 각각의 컨트롤러에서 예외 처리를 하지 않아도 되며, 예외 처리 로직의 중복을 제거할 수 있습니다.
1. @ControllerAdvice
- @ControllerAdvice 어노테이션을 사용하여 공통 예외 처리를 수행하는 클래스를 정의합니다.
- 이 클래스에는 @ExceptionHandler 어노테이션을 사용하여 예외 처리 메서드를 정의합니다.
- @ExceptionHandler 어노테이션을 사용하여 예외 처리 메서드에 처리할 예외 클래스를 지정할 수 있습니다.
2. @ExceptionHandler
- @ExceptionHandler 어노테이션을 사용하여 예외 처리 메서드를 정의합니다.
- 이 어노테이션을 사용한 메서드는 해당 예외가 발생했을 때 호출됩니다.
- 메서드 파라미터에는 예외 클래스 타입을 지정할 수 있습니다.
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception e) {
ErrorResponse errorResponse = new ErrorResponse("500", e.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
@ExceptionHandler(UserNotFoundException.class)
public ResponseEntity<ErrorResponse> handleUserNotFoundException(UserNotFoundException e) {
ErrorResponse errorResponse = new ErrorResponse("404", e.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.NOT_FOUND);
}
}
'코딩 > Spring' 카테고리의 다른 글
[Spring] 싱글톤 패턴 사용 이유, 예시, 단점, 사용법 (0) | 2022.05.06 |
---|---|
[Spring] ResponseEntity 사용법 (0) | 2022.05.06 |
필드주입과 생성자주입의 차이, 장단점(생성자 주입 vs 필드 주입) (0) | 2022.05.05 |
[SpringSecurity] JWT 구현 시 javax/xml/bind/DatatypeConverter (0) | 2022.01.13 |
[Spring] 서비스 기동 시키는 방법 3가지 (0) | 2021.10.01 |