인프런 커뮤니티 질문&답변
LogInterceptor 와 LoginCheckInterceptor 실행 순서 질문입니다.
작성
·
397
0
스프링 mvc 2편 스프링 인터셉터 - 인증 체크 5:35 에 나오는 화면 입니다
1.LogInterceptor 이 1 순위 LoginCheckInterceptor 2 순위로 실행 되도록 등록이
되어 있는데 2번째 사진에는 인터셉터1 -> 인터셉터2 라고 적혀 있는데 이 의미가
prehandle이 호출 될 때 LogInterceptor 의 prehandle이 먼저 호출 되고 LoginCheckInterceptor 의 prehandle이 호출이 된다는 건가요?
pdf에는 인터셉터1이 다 끝나고 인터셉터 2가 실행된다는 것처럼 보여서 개념이 잘 안잡히네요
LogInterceptor 에는 postHandle이 있고 LoginCheckInterceptor postHandle 없습니다.
강의 에서 LogInterceptor의 prehandle은 true를 반환하고 LoginCheckInterceptor 의
prehandle이 false를 반환 하는데 로그 기록을 보면
LogInterceptor 의 postHandle정보가 없고 바로 afterCompletion를 보여주는데
LoginCheckInterceptor 의 prehandle 반환값 false가 LogInterceptor 의 postHandle을 실행하
는데 영향을 끼치나요?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
인터셉터는 등록된 순서대로 실행됩니다. 따라서, 1 순위로 등록된 LogInterceptor의 preHandle이 먼저 호출되고, 이후 2 순위로 등록된 LoginCheckInterceptor의 preHandle이 호출됩니다.
로그에는 postHandle과 afterCompletion에 대한 정보가 포함됩니다. LoginCheckInterceptor에서 preHandle이 false를 반환하면, 이후 등록된 인터셉터들의 preHandle이 호출되지 않고, postHandle과 afterCompletion도 호출되지 않습니다. 따라서, LogInterceptor의 postHandle에 영향을 끼치지 않습니다.
강의에서는 LogInterceptor의 postHandle이 호출되지 않는 이유는, preHandle에서 true를 반환하기 때문입니다. 따라서, postHandle까지 잘 호출되어 로그가 기록됩니다.
다만, LoginCheckInterceptor에서 preHandle이 false를 반환하면, 이후의 작업을 진행하지 않기 때문에 유의해야 합니다.
이상입니다. 추가적인 질문이 있으시면 언제든지 물어보세요 :)




