Spring Filter์ Interceptor
๐ Filter
J2EE ํ์ค์คํ์ธ ํํฐ(Filter)๋ Dispatcher Servlet์ ์์ฒญ์ด ์ ๋ฌ๋๊ธฐ ์ /ํ์ url ํจํด์ ๋ง๋ ๋ชจ๋ ์์ฒญ์ ๋ํด ๋ถ๊ฐ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์๋ ํฐ์บฃ๊ณผ ๊ฐ์ ์น์ปจํ ์ด๋(WAS)์ ์ํด ๊ด๋ฆฌ๊ฐ ๋๋ฏ๋ก ๋์คํจ์ฒ ์๋ธ๋ฆฟ์ผ๋ก ๊ฐ๊ธฐ ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ฒ
- HTTP Request โ WAS โ ํํฐ โ ์๋ธ๋ฆฟ โ ์ปจํธ๋กค๋ฌ
Filter์ ๋ฉ์๋
init
-
ํํฐ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๊ณ ์๋น์ค์ ์ถ๊ฐํ๊ธฐ ์ํ ๋ฉ์๋
-
์น ์ปจํ ์ด๋๊ฐ 1ํ
init
๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํํฐ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๋ฉด ์ดํ์ ์์ฒญ๋ค์doFilter
๋ฅผ ํตํด ์ /ํ์ ์ฒ๋ฆฌ
doFilter
-
url-pattern์ ๋ง๋ ๋ชจ๋ HTTP ์์ฒญ์ด ๋์คํจ์ฒ ์๋ธ๋ฆฟ์ผ๋ก ์ ๋ฌ๋๊ธฐ ์ /ํ์ ์น ์ปจํ ์ด๋์ ์ํด ์คํ
-
doFilter
์ ํ๋ผ๋ฏธํฐ๋ก๋FilterChain
์ด ์๋๋ฐ,FilterChain
์doFilter
ํตํด ๋ค์ ๋์์ผ๋ก ์์ฒญ์ ์ ๋ฌ
destroy
-
ํํฐ ๊ฐ์ฒด๋ฅผ ์๋น์ค์์ ์ ๊ฑฐํ๊ณ ์ฌ์ฉํ๋ ์์์ ๋ฐํ
-
์น ์ปจํ ์ด๋์ ์ํด 1๋ฒ ํธ์ถ๋๋ฉฐ ์ดํ์๋
doFilter
์ ์ํด ์ฒ๋ฆฌ๋์ง ์๋๋ค.
๐ Interceptor
Spring์ด ์ ๊ณตํ๋ ๊ธฐ์ ๋ก์จ, ๋์คํจ์ฒ ์๋ธ๋ฆฟ(Dispatcher Servlet)์ด ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ๊ธฐ ์ ๊ณผ ํ์ ์์ฒญ๊ณผ ์๋ต์ ์ฐธ์กฐํ๊ฑฐ๋ ๊ฐ๊ณตํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณต
- ์น ์ปจํ ์ด๋์์ ๋์ํ๋ ํํฐ์ ๋ฌ๋ฆฌ ์ธํฐ์ ํฐ๋ ์คํ๋ง ์ปจํ ์คํธ์์ ๋์์ ํ๋ ๊ฒ์ด๋ค.
- HTTP Request โ WAS โ ํํฐ โ ์๋ธ๋ฆฟ โ ์คํ๋ง ์ธํฐ์ ํฐ โ ์ปจํธ๋กค๋ฌ
Interceptor์ ๋ฉ์๋
preHandle
- ์ปจํธ๋กค๋ฌ๊ฐ ํธ์ถ๋๊ธฐ ์ ์ ์คํ
postHandle
- ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถ๋ ํ์ ์คํ
afterCompletion
- ๋ชจ๋ ๋ทฐ์์ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ ์ผ์ ํฌํจํด ๋ชจ๋ ์์ ์ด ์๋ฃ๋ ํ์ ์คํ
reference: ํ ๋น์ ์คํ๋ง vol2, bryce๋ ๋ธ๋ก๊ทธ