Filter | ||
ํน์ง | - J2EE ํ์ค ์คํ ๊ธฐ๋ฅ์ผ๋ก Dispatcher Servlet ์ ์์ฒญ์ด ์ ๋ฌ๋๊ธฐ ์ /ํ url ํจํด์ ๋ง๋ ๋ชจ๋ ์์ฒญ์ ๋ํด ๋ถ๊ฐ์์
์ ์ฒ๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณต - filter ๋ ์คํ๋ง ๋ฒ์ ๋ฐ์์ ์ฒ๋ฆฌ - ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์๋ ํฐ์บฃ๊ณผ ๊ฐ์ ์น ์ปจํ ์ด๋์ ์ํด ๊ด๋ฆฌ๊ฐ ๋๋ ๊ฒ์ด๊ณ , ๋์คํจ์ฒ ์๋ธ๋ฆฟ ์ /ํ์ ์ฒ๋ฆฌํ๋ ๊ฒ - ๋จ, ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก์ด ๊ฐ๋ฅ - ํํฐ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด์๋ javax.servlet ์ Filter ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํ(implements) ํด์ผ ํจ |
|
Filter ๋ฉ์๋ | init | - ํํฐ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๊ณ ์๋น์ค์ ์ถ๊ฐํ๊ธฐ ์ํ ๋ฉ์๋ - ์น ์ปจํ ์ด๋๊ฐ 1ํ init ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํํฐ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํ ํ๋ฉด, ์ดํ์ ์์ฒญ๋ค์ doFilter๋ฅผ ํตํด ์ฒ๋ฆฌ๋๋ค. |
doFilter | - url-pattern ์ ๋ง๋ ๋ชจ๋ HTTP ์์ฒญ์ด ๋์คํจ์ฒ ์๋ธ๋ฆฟ์ผ๋ก ์ ๋ฌ๋๊ธฐ ์ ์น ์ปจํ
์ด๋์ ์ํด ์คํ๋๋ ๋ฉ์๋ - doFilter ์ ํ๋ผ๋ฏธํฐ๋ก๋ FilterChain์ด ์๋๋ฐ, FilterChain ์ doFilter ํตํด ๋ค์ ๋์์ผ๋ก ์์ฒญ์ ์ ๋ฌํ๊ฒ ๋๋ค. chain.doFilter() ์ /ํ์ ํ์ํ ์ฒ๋ฆฌ ๊ณผ์ ์ ๋ฃ์ด์ค์ผ๋ก์จ ์ํ๋ ์ฒ๋ฆฌ๋ฅผ ์งํ ํ ์ ์๋ค. |
|
destroy | - ํํฐ ๊ฐ์ฒด๋ฅผ ์๋น์ค์์ ์ ๊ฑฐํ๊ณ ์ฌ์ฉํ๋ ์์์ ๋ฐํํ๋ ๋ฉ์๋ - ์น ์ปจํ ์ด๋์ ์ํด 1๋ฒ ํธ์ถ๋๋ฉฐ ์ดํ doFilter์ ์ํด ์ฒ๋ฆฌ๋์ง ์๋๋ค. |
Interceptor | ||
ํน์ง | - Spring ์ด ์ ๊ณตํ๋ ๊ธฐ์ - Dispatcher Servlet ์ด ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ๊ธฐ ์ ๊ณผ ํ์ ์์ฒญ๊ณผ ์๋ต์ ์ฐธ์กฐํ๊ฑฐ๋ ๊ฐ๊ณตํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณต - ์คํ๋ง ์ปจํ ์คํธ์์ ๋์ - DispatcherServlet ์ ํธ๋ค๋ฌ๋งคํ์ ํตํด ์ ์ ํ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ๋๋ก ์์ฒญํ๋๋ฐ, ๊ทธ ๊ฒฐ๊ณผ๋ก ์คํ ์ฒด์ธ(HandlerExecutionChain)์ return - ์ด ์คํ ์ฒด์ธ์ 1๊ฐ ์ด์์ ์ธํฐ์ ํฐ๊ฐ ๋ฑ๋ก๋์ด ์๋ค๋ฉด ์์ฐจ์ ์ผ๋ก ์ธํฐ์ ํฐ๋ค์ ๊ฑฐ์ณ ์ปจํธ๋กค๋ฌ๊ฐ ์คํ๋๋๋ก ํ๊ณ , ์ธํฐ์ ํฐ๊ฐ ์๋ค๋ฉด ๋ฐ๋ก ์ปจํธ๋กค๋ฌ๋ฅผ ์คํํ๋ค. |
|
๋ฉ์๋ | preHandle | - ์ปจํธ๋กค๋ฌ ํธ์ถ ์ ์คํ - ์ปจํธ๋กค๋ฌ ์ด์ ์ ์ฒ๋ฆฌํด์ผ ํ๋ ์ ์ฒ๋ฆฌ ์์ ์ด๋ ์์ฒญ ์ ๋ณด๋ฅผ ๊ฐ๊ณตํ๊ฑฐ๋ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ |
postHandle | - ์ปจํธ๋กค๋ฌ ํธ์ถ ํ ์คํ - ์ปจํธ๋กค๋ฌ ์ดํ์ ์ฒ๋ฆฌํด์ผ ํ๋ ํ์ฒ๋ฆฌ ์์ ์ด ์์ ๋ ์ฌ์ฉ ๊ฐ๋ฅ - ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐํํ๋ ModelAndView ํ์ ์ ์ ๋ณด๊ฐ ์ ๊ณต๋๋๋ฐ, ์ต๊ทผ Json ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ RestAPI ๊ธฐ๋ฐ์ ์ปจํธ๋กค๋ฌ(@RestController)๋ฅผ ๋ง๋ค๋ฉด ์์ฃผ ์ฌ์ฉ๋์ง ์์ |
|
afterCompletion | - ๋ชจ๋ ๋ทฐ์์ ์ต์ข
๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ ์ผ์ ํฌํจํด ๋ชจ๋ ์์
์ด ์๋ฃ๋ ํ ์คํ - ์์ฒญ ์ฒ๋ฆฌ ์ค ์ฌ์ฉํ ๋ฆฌ์์ค๋ฅผ ๋ฐํํ ๋ ์ฌ์ฉํ๊ธฐ ์ ํฉ |
Filter | Interceptor | |
๊ด๋ฆฌ๋๋ ์ปจํ ์ด๋ | ์น ์ปจํ ์ด๋ | ์คํ๋ง ์ปจํ ์ด๋ |
Request/Response ๊ฐ์ฒด ์กฐ์ ๊ฐ๋ฅ ์ฌ๋ถ |
O | X |
์ฉ๋ | - ๊ณตํต๋ ๋ณด์ ๋ฐ ์ธ์ฆ/์ธ๊ฐ ๊ด๋ จ ์์
- ๋ชจ๋ ์์ฒญ์ ๋ํ ๋ก๊น ๋๋ ๊ฐ์ฌ - ์ด๋ฏธ์ง/๋ฐ์ดํฐ ์์ถ ๋ฐ ๋ฌธ์์ด ์ธ์ฝ๋ฉ - Spring๊ณผ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ ๊ธฐ๋ฅ |
- ์ธ๋ถ์ ์ธ ๋ณด์ ๋ฐ ์ธ์ฆ/์ธ๊ฐ ๊ณตํต ์์
- API ํธ์ถ์ ๋ํ ๋ก๊น ๋๋ ๊ฐ์ฌ - Controller ๋ก ๋๊ฒจ์ฃผ๋ ์ ๋ณด(๋ฐ์ดํฐ)์ ๊ฐ๊ณต |
<์ฐธ์กฐ>
https://mangkyu.tistory.com/173
[Spring] ํํฐ(Filter) vs ์ธํฐ์ ํฐ(Interceptor) ์ฐจ์ด ๋ฐ ์ฉ๋ - (1)
Spring์ ๊ณตํต์ ์ผ๋ก ์ฌ๋ฌ ์์ ์ ์ฒ๋ฆฌํจ์ผ๋ก์จ ์ค๋ณต๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ ์ ์๋๋ก ๋ง์ ๊ธฐ๋ฅ๋ค์ ์ง์ํ๊ณ ์๋ค. ์ด๋ฒ์๋ ๊ทธ ์ค์์ ํํฐ(Filter) vs ์ธํฐ์ ํฐ(Interceptor)์ ์ฐจ์ด์ ๋ํด ์์๋ณด๊ณ ์
mangkyu.tistory.com
[Spring] ์ํ์น ํฐ์บฃ (0) | 2022.06.09 |
---|---|
[Spring] Dependency Injection (0) | 2022.06.09 |
[Spring] Spring Bean Life Cycle (0) | 2022.06.09 |
[Spring] Spring Web MVC (0) | 2022.06.08 |
[Spring] Spring Framework ์ Spring Boot์ ์ฐจ์ด (0) | 2022.06.07 |
๋๊ธ ์์ญ