(์Šคํ”„๋ง) 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
    }
}

 

Posted by doubler
,