(์คํ๋ง) HandlerInterceptor vs WebRequestInterceptor
- ์ถ์ํ๋ ์ธํฐํ์ด์ค๊ฐ ๋ ๊ฐ๊ฐ ์กด์ฌํ๋ค.
- ๋ฉ์๋ ๊ฐ์๊ฐ ๋์ผํ๋ค. preHandle()/postHandle()/afterCompletion(). ํธ์ถ ์ /ํธ์ถ ํ/์ฒ๋ฆฌ์๋ฃ ํ.
- DispatcherServlet ์ ํธ๋ค๋ฌ ๋งคํ์ ํตํ์ฌ ์ ์ ํธ๋ค๋ฌ ๋ฉ์๋๋ฅผ ์ฐพ์, HandlerAdapter ๋ฅผ ์ฌ์ฉ, ์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. (MVC ๊ธฐ์ค์์ AbstractHandlerMethodAdapter ์ RequestMappingHandlerAdapter ๋ฅผ ์ด์ฉํ๋ค.) ์ด๋ HandlerInterceptor ๊ฐ ์์ผ๋ฉด ์ ์ฒ๋ฆฌ/ํ์ฒ๋ฆฌ๋ฅผ ์ปค์คํ ํ๊ฒ ์์ฑํ ์ ์๋ค.
- MVC ๋ฐฉ์์์ HandlerInterceptor ๋ฅผ ์ด์ฉํ์ง๋ง ์คํ๋ง ๋ชจ๋ ์์ฒญ์ ๋ํด์ ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๊ณ ํ๋ค๋ฉด WebRequestInterceptor ๋ฅผ ์ด์ฉํ๋ค. ์๋ํ๋ฉด WebRequest ๋ผ๋ ์ข ๋ ์คํ๋ง๋ ๋ฒจ์ ์ถ์ํ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฌ๋ ๋ ์ธํฐ์ ํฐ์ ๋์๋ฐฉ์์ ๋น์ทํ๊ธฐ์ ์ ์๋ฅผ ์ฌ์ฉํด๋ ์๊ด์๋ค. ์ ์์ ๊ฒฝ์ฐ ๋ฉ์๋ ์๊ทธ๋์ฒ๊ฐ request, response, handler ๋ฑ ๋ํ ์ผํ๊ฒ ์์ด์ ์ธ๋ฐํ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
(์ดํํฐ๋ธ ์ฝํ๋ฆฐ) has-a ๊ด๊ณ
- has-a ์ปดํฌ์ง์ ์ด ์์ ํ๊ณ ๋ช ์์ ์ด๋ค.
- ๋ช ํํ is-a ๊ด๊ณ์ผ ๋ ์์์ ์ด์ฉํ์.
- ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ๋ชจ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋๋ฐ ์ผ๋ถ๋ ์ฒ๋ฆฌํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ด๋๋ ์์๋ณด๋จ ์ปดํฌ์ง์ ์ ์ฌ์ฉํ๋ค.
- ์ํผํด๋์ค ๋์์ ์๋ธํด๋์ค์์ ๊นจ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค. (์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น์ ๊นจํธ๋ฆฐ๋ค.)
- ์ปดํฌ์ง์ ์ ๋ง๋ฅ์ ์๋๋ค.
์ํผํด๋์ค ๋์์ ์๋ธํด๋์ค์์ ๊นจ๋ฒ๋ฆฌ๋ ์ฝ๋ ์์.
import java.lang.UnsupportedOperationException
interface OrderService {
fun ordered(): Boolean
}
class SnackOrderService: OrderService {
override fun ordered(): Boolean {
throw UnsupportedOperationException("SnackOrderService ๋ ์ง์ํ์ง ์์ต๋๋ค.")
}
}
class CarOrderService: OrderService {
override fun ordered(): Boolean {
return true
}
}
'Interest > ๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2024-03 ๊ฐ๋ฐ : ์ํฌ๋ฆฌ ๊ธฐ๋ก (0) | 2024.03.09 |
---|---|
2024-02 ๊ฐ๋ฐ : ์ํฌ๋ฆฌ ๊ธฐ๋ก (1) | 2024.02.20 |
2024-01 ๊ฐ๋ฐ : ์ํฌ๋ฆฌ ๊ธฐ๋ก (0) | 2024.01.21 |
2023-11-25 ๊ฐ๋ฐ : ์ํฌ๋ฆฌ ๊ธฐ๋ก (0) | 2023.11.25 |
2023-11-19 ๊ฐ๋ฐ : ์ํฌ๋ฆฌ ๊ธฐ๋ก (0) | 2023.11.19 |