작성
·
567
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
안녕하세요 강의 수강중 궁금증이 생겨 글 남깁니다.
강의 마지막에 @Login을 만들어 주어 로그인 시 처리를 간단하게 해주셨습니다. 이를 보고 든 궁금증이 그렇다면 인터셉터의 역할도 이것으로 대체를 해주어도 되는것일까요? 컨트롤러에 있는 메서드들에 @Login을 달아주면 비로그인 상태로 '/items'로 접근하면 이를 redirect정보를 담고 똑같이 사용해주면 되는것일까요?
제가 생각한 차이로는 인터셉터의 preHandle의 경우 컨트롤러를 호출조차 안하게 하는 점이 있는 것 같습니다.
둘을 구분하여 사용해야 한다면 어느 경우인지 궁금합니다.
답변 1
1
안녕하세요. spring4185님, 공식 서포터즈 David입니다.
ArgumentResolver와 Interceptor는 서로 지향하는 바가 다릅니다.
ArgumentResolver의 경우, 핸들러의 파리미터에 필요한 객체를 전달하는 것에 초점을 맞추고 있습니다.
반면, Interceptor는 요청이 핸들러로 가기 전에 전처리 되어야 하는 것들을 공통적으로 처리하는 것에 초점을 맞추고 있습니다.
의도하지 않은 방식으로 기능을 구현하는 것은 개인의 선택입니다. 다만, 강의에서 구현된 로그인한 사용자 객체를 핸들러 파라미터에 전달하는 것은 Argument Resolver를 사용하는 것이 적절합니다.
감사합니다.