Post

Spring Framework의 Interceptor: 공통 작업 처리 및 예제 코드

Spring 에서 Interceptor 를 써보자


Spring 은 아주 많은 곳에서 사용하는 Backend Framework 이다! 열심히 구축해서 Front에서 요청을 주면 그것에 대한 응답을 줄수가 있다! 예를 들면 이런것이다. /user/{id} 로 GET 요청을 보내면 그 ID 에 해당 하는 사람의 정보를 주는것 같은것이다. 하지만 딱 이 요청만 처리하지는 않을것이다. 엄청 많은 요청을 처리해야하고 그 모든 요청에 공통적으로 들어가야 하는 부분이 있을 것이다. 예를 들면 그 요청이 처리 되기 전 Authorized 된 요청인지 확인을 한다던가 아니면 항상 response 에 추가해 줘야하는 값이 있다던가! 이런 상황이 있을 수 있는데 이때 사용 할 수 있는것이 바로 interceptor 이다.

예를 들어보자!


1
2
3
4
@GetMapping("/user/{id}")
public getUserInfo (...){
	...
}

여기에 요청을 보내려고 하는데 이 요청 전에 Auth를 확인 하는 작업을 추가하기 위해선 getUserInfo 에 코드를 추가 할 수도 있지만 이렇게도 할 수 있다는 것이다.

1
2
3
4
5
6
7
@Component
public class QNARequestInterceptorimplements HandlerInterceptor {
	@Override
	public boolean preHandle (HttpServletRequest req, HttpServletResponse res, Object handler) {
		// 여기에서 Auth check
	}
  }

혹은! 모든 요청에 대해 response 에 추가해야하거나 model 에 추가해야하는 값이 있다면 ! 아래처럼 할 수 있다

1
2
3
4
5
6
7
8
@Component
public class QNARequestInterceptorimplements HandlerInterceptor {
	@Override
	public void postHandle (HttpServletRequest req, HttpServletResponse res, Object handle, ModelAndView modelAndView) {
		// 여기에서 추가
	}

}
This post is licensed under CC BY 4.0 by the author.

© 병욱. Some rights reserved.