afterCompletion에 대해
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 관련 강의나 스프링 공식 문서에서 더 자세한 정보를 얻으실 수 있습니다.
이미지 업로드와 db 트랜잭션 묶는법
0
43
1
Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4
0
53
2
MessageSourceTest 코드
0
47
1
인터셉터 에러 설정
0
48
1
resolveArgument()메서드 질문
0
57
1
43강 검증1 에서 실패 로직 관련 질문있습니다.
0
56
2
타임리프 3.X 버전 rendering, serializer 에러 해결 방법
2
133
3
스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ
0
90
3
pdf 오타 문의
0
57
1
ItemUpdateForm 검증 관련 질문입니다.
0
48
1
22page 링크 주소 변경
0
59
2
특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문
0
53
1
섹션3번 수업에 대한 질문입니다.
0
80
2
@Autowired 보다 더 좋은 방법이 어떤 걸까요?
0
85
2
타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.
0
65
1
자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다
0
142
3
스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문
0
63
1
톰캣 에러 페이지가 안보입니다.
0
102
2
apiEceptionController에서 센드 에러 호출하면 안되는지?
0
81
1
세션 타임아웃시 쿠키 삭제 방법이 없나요?
0
118
2
ApiExceptionController 질문드립니다.
0
64
1
셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?
0
66
1
MemberRepository 필드의 fianl 선언 유무
0
85
2
혹시 index.html 에서는 fragment 사용이 안되는건가요
0
58
1





