Interceptor

์ •์˜

Dispatcher Servlet์— ์˜ํ•ด Controller ๋‚ด๋ถ€ ๋กœ์ง์ด ์‹คํ–‰๋˜๊ธฐ ์ „/ํ›„๋กœ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•  ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ๊ด€๋ฆฌ๋œ๋‹ค.

์ƒ๋ช… ์ฃผ๊ธฐ

spring-mvc-life-cycle

๊ตฌํ˜„

์ธํ„ฐ์…‰ํ„ฐ๋Š” ๋‹ค์Œ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

package org.springframework.web.servlet;

public interface HandlerInterceptor {

	default boolean preHandle(HttpServletRequest request,
		HttpServletResponse response,
		Object handler) throws Exception {
      return true;
	}

	default void postHandle(HttpServletRequest request,
		HttpServletResponse response, Object handler,
		@Nullable ModelAndView modelAndView) throws Exception {
	}

   default void afterCompletion(HttpServletRequest request,
		HttpServletResponse response, Object handler,
		@Nullable Exception ex) throws Exception {
	}

}

preHandle

์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰ ์ „ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ. ์„ธ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์ธ handler๋Š” ์›น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ปจํŠธ๋กค๋Ÿฌ(ํ•ธ๋“ค๋Ÿฌ) ๊ฐ์ฒด์— ํ•ด๋‹นํ•œ๋‹ค. ํ•ด๋‹น ๋ฉ”์„œ๋“œ์—์„œ true๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉด handler๊ฐ€ ์‹คํ–‰๋˜๊ณ , false๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉด ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰ ์ „ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

postHandle

์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰ ํ›„, ๋ทฐ ์‹คํ–‰ ์ „ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ. ์ปจํŠธ๋กค๋Ÿฌ(ํ•ธ๋“ค๋Ÿฌ)๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋œ ํ›„ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰ ์ค‘ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์‹œ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

afterCompletion

๋ทฐ ์‹คํ–‰ ํ›„ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ. ์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰ ์ค‘ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์‹œ ํ•ด๋‹น ๋ฉ”์„œ๋“œ์˜ ๋„ค ๋ฒˆ์งธ ์ธ์ž๋กœ ์˜ˆ์™ธ๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค(์˜ˆ์™ธ๊ฐ€ ์—†๋‹ค๋ฉด null). ๋”ฐ๋ผ์„œ ์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰ ํ›„ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด(๋กœ๊น…, ์‹คํ–‰ ์‹œ๊ฐ„ ๊ธฐ๋ก ๋“ฑ) ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Last updated