먼저 SpringFramework를 3.2버전 이상 사용하시는 분만 보시기 바랍니다.
(ControllerAdvice가 3.2버전때 만들어졌습니다.)
@ControllerAdvice는 @Controller 나 @RestController(4.0부터 지원)에서 발생하는 작업을 캐치해주는 기능을 가지고 있습니다.
(특정 컨트롤러만 캐치하는 것도 가능.. 4.0부터 지원이라네요. ControllerAdvice Annotation Documentation 참조)
저는 이것을 에러핸들링 용도로 사용해보았습니다.
클래스 위에 @ControllerAdvice를 붙여주고 어떤 Exception을 캐치할 것인지,
내부 메소드를 선언하여 메소드 상단에는 @ExceptionHandler(Exception.class) 와 같이 붙여줍니다.
최종적으로 아래와 같은 모습이 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @ControllerAdvice @RestController public class ControllerAdviceHandler { @ExceptionHandler (NullPointerException. class ) public Object nullPointerHandle(HttpServletRequest request, Exception e) { return "null" ; } @ExceptionHandler (Exception. class ) public Object exceptionHandle(HttpServletRequest request, Exception e) { return "exception" ; } } |
Exception의 가장 상위인 Exception을 핸들링하고, 그 하위인 NullPointerException을 핸들링하는 메소드가 따로 있는 경우,
NullPointerException은 NullPointerException 핸들링 메소드로 들어가서 처리가 됩니다.
'개발 > Spring Framework' 카테고리의 다른 글
[Spring Framework] AOP @Around (0) | 2016.06.10 |
---|---|
[Spring Data Commons] ChaniedTransactionManager (0) | 2016.06.10 |
[Spring Framework] PointCut 표현식 (0) | 2016.06.10 |
[Spring Framework] Properties Reload (0) | 2016.06.10 |
[Spring Framework] Ehcache 사용 시 cache key를 여러개 잡고 싶은 경우 (0) | 2016.06.10 |