해결된 질문
작성
·
186
0
afterCompletion 메서드는 View가 렌더링되고 난 후에 실행되는 메서드라고 설명해주셨고, Controller에서 예외가 발생하면 afterCompletion 메서드의 예외 파라미터로 전달 된다고 하셨습니다.
1. 그렇다면 Controller가 View가 아닌 JSON 등의 모델 데이터를 반환할 때는 afterCompletion 메서드가 실행 되지도 않고 Interceptor가 예외 정보도 전달 받을 수 없는건가요?
만약 맞다면, Controller에서 예외 처리 하는 것이 맞을까요?
Controller에서 예외 처리해야하는 것과 afterCompletion에서 예외 처리해야하는 것의 차이는 뭔가요?
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
yejun_1220님의 질문에 답변드리겠습니다.
afterCompletion
메서드는 스프링 MVC의 인터셉터가 제공하는 메서드 중 하나로, 컨트롤러 메서드의 처리가 완전히 끝난 뒤에 실행됩니다. 이는 View가 렌더링된 이후이든, REST API의 경우 JSON 등의 모델 데이터를 반환하는 경우이든 상관없이 모두 해당됩니다. 따라서 JSON을 반환하는 경우에도 afterCompletion
메서드는 실행되며, 예외 정보도 인터셉터가 전달 받을 수 있습니다.
컨트롤러에서 예외 처리를 하는 것이 기본적으로 바람직합니다. 예외 상황을 세부적으로 제어하고, 적절한 예외 응답을 반환하는 것은 컨트롤러의 책임입니다. 컨트롤러에서 @ExceptionHandler
를 사용하여 예외 처리를 할 수 있습니다.
컨트롤러에서 예외 처리하는 것은 주로 특정 컨트롤러 또는 컨트롤러 내의 특정 액션에서 발생하는 예외를 처리하는 데 적합합니다. 반면 afterCompletion
에서 예외를 처리하는 것은 인터셉터 내에서 발생하는 예외나 컨트롤러의 작업이 완료된 이후에 발생하는 예외를 처리할 때 유용합니다. 즉, 인터셉터를 통한 예외 처리는 애플리케이션 전역에 걸쳐 공통적으로 발생할 수 있는 예외를 처리하는 경우에 사용될 수 있습니다.
afterCompletion 메서드와 인터셉터에 대해서 추가로 궁금한 사항이 있으시다면 스프링 MVC 관련 강의나 스프링 공식 문서에서 더 자세한 정보를 얻으실 수 있습니다.