Spring

[Spring] Interceptor ๋ž€?

junnnhhh 2026. 5. 7. 17:15
728x90

๐Ÿ’ฃ ์ƒํ™ฉ

๊ด€๋ฆฌ์žํŽ˜์ด์ง€์—์„œ ์„ธ์…˜์ด ๋งŒ๋ฃŒ๋œ ํ›„, ํŽ˜์ด์ง€์—์„œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, 500์—๋Ÿฌ๊ฐ€ ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

๋ณดํ†ต์ด๋ผ๋ฉด ์„ธ์…˜์ด ๋งŒ๋ฃŒ๋œ ๊ฒฝ์šฐ, ํŠ•๊ฒจ์„œ ์ฒ˜์Œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๊ฐ€์•ผํ•˜๋Š”๋ฐ...

ํ™•์ธํ•ด๋ณด๋‹ˆ๊น api๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, ์„ธ์…˜์—์„œ ์œ ์ € ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ•„๋“œ๋ฅผ ๋งคํ•‘ํ•˜๋Š”๊ฒŒ ์žˆ๋Š”๋ฐ, ์„ธ์…˜์ด ๋งŒ๋ฃŒ๋˜๋‹ˆ ์ •๋ณด๊ฐ€ null๋กœ ๋–จ์–ด์ ธ์„œ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ์ด๋‹ค. ์ด ์„ธ์…˜ ์ฒดํฌ๋ฅผ ์–ด๋””์„œ ํ•ด์•ผ๋ ๊นŒ ๊ณ ๋ฏผ์„ ํ•˜๋‹ค๊ฐ€ interceptor ์ชฝ์— ์ถ”๊ฐ€๋ฅผ ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค๋ผ๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๊ณ , ์ด ๋‚ด์šฉ์œผ๋กœ ์ž‘์—… ํ›„, ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ ํ•œ๋‹ค.


โ“ Interceptor ๋ž€?

Spring์—์„œ ์‚ฌ์šฉํ•˜๋Š” Interceptor๋Š” ํŠน์ • URL ์š”์ฒญ ์‹œ, Controller๋กœ ๊ฐ€๋Š” ์š”์ฒญ์„ ์ค‘๊ฐ„์—์„œ ๊ฐ€๋กœ์ฑ„๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
๋ญ ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด, API๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋งˆ๋‹ค ์š”์ฒญ URL ๊ฒ€์ฆ ๋กœ์ง์ด๋ผ๋˜์ง€, Controller ์ˆ˜ํ–‰ ์ „ ์„ธ์…˜์ด ์œ ํšจํ•œ์ง€ ๊ฒ€์ฆ์„ ํ•œ๋‹ค๋˜์ง€...

Spring์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ์ตœ์ƒ์œ„ Interceptor ์ธํ„ฐํŽ˜์ด์Šค๋Š” HandlerInterceptor์ด๋‹ค.

public interface HandlerInterceptor {

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

    default void postHandle(...) {}

    default void afterCompletion(...) {}
}

  

๊ฐ๊ฐ ๋ฉ”์„œ๋“œ๋ฅผ ์„ค๋ช…ํ•ด๋ณด์ž๋ฉด,

1๏ธโƒฃ preHandle → Controller ํ˜ธ์ถœ ์ „ | ์š”์ฒญ ์ฐจ๋‹จ ๋ฐ ๊ฒ€์‚ฌ 

2๏ธโƒฃ postHandle →  Controller ์‹คํ–‰ ํ›„, View ๋ Œ๋”๋ง ์ „ | ์‘๋‹ต ๋ฐ์ดํ„ฐ ๊ฐ€

3๏ธโƒฃ afterCompletion → ์‘๋‹ต ์™„๋ฃŒ ํ›„ | ๋ฆฌ์†Œ์Šค ์ •๋ฆฌ/๋กœ๊ทธ


โœ”๏ธ interceptor์„ ์•ˆ ํƒ€๊ฒŒ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

๋ถ„๋ช… ๋กœ์ง์„ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด, interceptor ์ฒ˜๋ฆฌ๋ฅผ ์ƒ๋žตํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

์ด ๋•Œ๋Š” WebMvcConfigurer์„ ์ƒ์†๋ฐ›๋Š” Config ํด๋ž˜์Šค์—์„œ ์ธํ„ฐ์…‰ํ„ฐ ์ƒ์„ฑ์ž์— ์•„๋ž˜ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

.excludePathPatterns(
    "/login/**",
    "/css/**",
    "/js/**",
    "/error"
)

   

728x90

'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring] HandlerMethod ?  (0) 2026.04.23