인터셉터를 이용해 Controller 공통 로직 처리하기 - accidentlywoo/legacyVue GitHub Wiki

인터셉터를 이용해 Controller 공통 로직 처리하기

  • 들어가기 전에 이번 시간엔 웹 어플리케이션에 인터셉터를 적용해 컨트롤러 메소드가 실행되기 전에, 컨트롤러 메소드가 실행된 이후에 콘솔에 로그를 남기는 예제를 작성해 보도록 하겠습니다.

학습 목표

  1. Spring MVC 웹 어플리케이션에 인터셉터를 적용할 수 있다.

핵심 개념

  • HandlerInterceptorAdapter
  • WebMvcContextConfiguration의 addInterceptors() 메소드
  • InterceptorRegistry

실습코드

LogInterceptor.java `package kr.or.connect.guestbook.interceptor;

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class LogInterceptor extends HandlerInterceptorAdapter{

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
		ModelAndView modelAndView) throws Exception {
	System.out.println(handler.toString() + " 가 종료되었습니다.  " + modelAndView.getViewName() + "을 view로 사용합니다.");
}

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
		throws Exception {
	System.out.println(handler.toString() + " 를 호출했습니다.");
	return true;
}	

}WebMvcContextConfiguration 에 addInterceptors() 메소드를 추가합니다. 인자로 넘어온 InterceptorRegistry의 addInterceptor에 앞에서 만든 인터셉터 객체를 넣어주면 추가가 됩니다.@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LogInterceptor()); }`

생각해보기

  1. 인터셉터를 이용해 어떤 일들을 공통처리할 수 있을까요?