SpringBoot에서 애노테이션을 활용한 예외 처리

Reading time ~1 minute

스프링 부트에서 예외 처리 하는 세가지 방법 (출처)

  • Global Level using - @ControllerAdvice

  • Controller Level using - @ExceptionHandler

  • Method Level using - try/catch


Controller

@Controller
public class UserController {
  @ExceptionHandler(UnAuthenticationException.class)
  @ResponseStatus(value = HttpStatus.UNAUTHORIZED)
  public void unAuthentication() {
    log.debug("UnAuthenticationException is happened!");
  }
}
  • 위의 방법은 Controller 내부에서 예외가 발생하면 처리한다.

  • @ExceptionHandler를 통해 UnAuthenticationException에 대한 예외 처리를 한다.

  • @ResponseStatus를 통해 UNAUTHORIZED(401) 상태 값을 응답 한다.


ControllerAdvice

@ControllerAdvice
public class SecurityControllerAdvice {
  @ExceptionHandler(UnAuthenticationException.class)
  @ResponseStatus(value = HttpStatus.UNAUTHORIZED)
  public void unAuthentication() {
    log.debug("UnAuthenticationException is happened!");
  }
}

  • 위의 방법은 모든 컨트롤러에 적용 된다.