Spring

Spring

[Spring] GlobalExceptionFilter 에 적용한 Exception 잡히지 않는 오류

1. 문제상황AOP 를 활용해서 요청의 권한을 검증하고권한이 없는 경우 AccessDenieedException 을 던지고GlobalExceptionHandler 에서 잡아서 처리하길 기대했다. 문제의 코드 ( 권한 검증 AOP ) @Before("@annotation(requireBookAuthority)") public void verifyAttendanceBookAuthority(JoinPoint joinPoint, RequiredBookAuthority requireBookAuthority) throws Throwable { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getReq..

Spring

[Spring] GlobalExceptionHandler 구현하기

0. 배경지식이 글을 이해하기 위해 필요한 간단한 기본 지식을 설명 드리겠습니다. 백엔드 개발자에게 예외 처리란 중요한 작업 중 하나입니다.서비스 운영 시에는 예외를 로깅하고 예외를 가공해서 사용자에게 필요한 정보만을 노출하는 것이 중요합니다. 이러한 예외 처리를 Spring 은 다양한 기능으로 추상화 해 개발자의 예외 처리 어려움을 덜어줍니다.Spring 은 예외 처리를 위해 기본적으로 3 가지의 ExceptionResolver 를 제공합니다. ExceptionHandlerExceptionResolverResponseStatusExceptionResolverDefaultHandlerExceptionResolver이 ExceptionResolver 가 동작하는 순서는 1 -> 2 -> 3 입니다.즉 Ex..

Spring

[Spring] Bean Validation 이란 ?

0. 표준화 된 Validation 이 필요한 이유 먼저 Validation 기능이 왜 필요한지 아래의 사진을 봅시다. 만약 공통화된 Validation 기능이 없다면 어떻게 될까요 ?위의 그림 처럼 각각의 계층에서 반복적으로 Custom Validation 을 진행해야 할 겁니다. 하지만 개발자들이 누구입니까 ?게으르기 위해 성실한 사람들 아니겠습니까?이 반복적인 Custom Validation 을 제거하기 위해서 표준화된 Validation 기능이 필요했습니다. 그리고 표준화된 Validation 기능을 적용하면 아래의 그림처럼 되는 것이죠. 도메인 모델을 정의하고 도메인 모델에 Validation을 적용하게 되면 각각의 계층에서 불필요한 Validation 기능을 삭제할 수 있게 됩니다.그렇다면 B..