๐Ÿ“Œ Spring Interceptor ์ •๋ฆฌ

My Pale Blue Dotยท2025๋…„ 4์›” 29์ผ
0

SPRING

๋ชฉ๋ก ๋ณด๊ธฐ
26/36
post-thumbnail

๐Ÿ“… ๋‚ ์งœ

2025-04-29


๐Ÿ“ ํ•™์Šต ๋‚ด์šฉ

1๏ธโƒฃ Interceptor๋ž€?

  • ์Šคํ”„๋ง MVC ์š”์ฒญ ์ฒ˜๋ฆฌ ํ๋ฆ„์— ๊ฐœ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋กœ์ฑ„๊ธฐ ๊ธฐ๋Šฅ
  • ์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰ ์ „/ํ›„, ๋ทฐ ๋ Œ๋”๋ง ํ›„์—๋„ ๊ฐœ์ž… ๊ฐ€๋Šฅ
  • ์ฃผ๋กœ ์ธ์ฆ/์ธ๊ฐ€, ๋กœ๊น…, ๊ณตํ†ต ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋“ฑ์— ํ™œ์šฉ
  • ์„œ๋ธŒ์ปจํŠธ๋กค๋Ÿฌ๋ณ„๋กœ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋จ

2๏ธโƒฃ Interceptor ์ž‘๋™ ์‹œ์ 

๋ฉ”์„œ๋“œ์„ค๋ช…
preHandle()์ปจํŠธ๋กค๋Ÿฌ ํ˜ธ์ถœ ์ „์— ์‹คํ–‰ (ํ•ต์‹ฌ ๋ฉ”์„œ๋“œ)
postHandle()์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰ ํ›„, ๋ทฐ ๋ Œ๋”๋ง ์ „์— ์‹คํ–‰
afterCompletion()๋ทฐ ๋ Œ๋”๋ง ์™„๋ฃŒ ํ›„ ์‹คํ–‰ (์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ํ•ญ์ƒ ์‹คํ–‰๋จ)

3๏ธโƒฃ Interceptor ์ „์ฒด ํ๋ฆ„ ์š”์•ฝ

ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ
      โ†“
DispatcherServlet ๋„์ฐฉ
      โ†“
๋“ฑ๋ก๋œ ์ธํ„ฐ์…‰ํ„ฐ์˜ preHandle() ํ˜ธ์ถœ
      โ†“
์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰
      โ†“
์ธํ„ฐ์…‰ํ„ฐ์˜ postHandle() ํ˜ธ์ถœ
      โ†“
๋ทฐ ๋ Œ๋”๋ง
      โ†“
์ธํ„ฐ์…‰ํ„ฐ์˜ afterCompletion() ํ˜ธ์ถœ
      โ†“
์‘๋‹ต ์™„๋ฃŒ

๐Ÿ”น ์ถœ๋ ฅ ๋กœ๊ทธ ์˜ˆ์‹œ

MemoInterceptor's preHandle...
INFO : com.example.app.controller.MemoController - GET /memo/add...
MemoInterceptor's postHandle...
MemoInterceptor's afterCompletion...

4๏ธโƒฃ Interceptor ์„ค์ • ๋ฐฉ๋ฒ• (Java Config ๊ธฐ๋ฐ˜)

โœ… Java ๊ธฐ๋ฐ˜ ์„ค์ • ๋ฐฉ์‹

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MemoInterceptor())
                .addPathPatterns("/memo/*")                // ํ•ด๋‹น ๊ฒฝ๋กœ์—๋งŒ ์ธํ„ฐ์…‰ํ„ฐ ์ ์šฉ
                .excludePathPatterns("/memo/login");       // ํŠน์ • ๊ฒฝ๋กœ๋Š” ์ œ์™ธ ๊ฐ€๋Šฅ
    }
}

โœ… ์„ค๋ช… ์š”์•ฝ

  • addInterceptor() : ์‚ฌ์šฉํ•  ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ๋“ฑ๋ก
  • addPathPatterns() : ํŠน์ • URL ํŒจํ„ด์—๋งŒ ์ ์šฉ
  • excludePathPatterns() : ํŠน์ • ๊ฒฝ๋กœ๋ฅผ ์ธํ„ฐ์…‰ํ„ฐ ์ฒ˜๋ฆฌ ๋Œ€์ƒ์—์„œ ์ œ์™ธ (์˜ˆ: ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๋“ฑ)
  • Java ์„ค์ •์„ ํ†ตํ•ด XML ์—†์ด๋„ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ

5๏ธโƒฃ ์ฐธ๊ณ  ์ด๋ฏธ์ง€

  • Interceptor ๋™์ž‘ ์‹œ์  ๊ตฌ์กฐ๋„

๐Ÿ”ฅ ์ •๋ฆฌ

  • Interceptor๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ํ๋ฆ„์— ์‚ฌ์ „/์‚ฌํ›„ ๊ฐœ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ํ•„ํ„ฐ ๊ฐœ๋…
  • ์ธ์ฆ, ์ธ๊ฐ€, ๋กœ๊น…, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ๊ณตํ†ต Model ์„ค์ • ๋“ฑ ๋‹ค์–‘ํ•œ ์˜์—ญ์— ํ™œ์šฉ ๊ฐ€๋Šฅ
  • preHandle() โ†’ ์š”์ฒญ ์ฐจ๋‹จ or ์ง„ํ–‰ ์—ฌ๋ถ€ ๊ฒฐ์ • postHandle() โ†’ ModelAndView ์ˆ˜์ • afterCompletion() โ†’ ๋ฆฌ์†Œ์Šค ์ •๋ฆฌ ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
  • Java ๊ธฐ๋ฐ˜ ์„ค์ •์ด๋ฏ€๋กœ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚จ
  • excludePathPatterns()๋ฅผ ํ™œ์šฉํ•ด ๋กœ๊ทธ์ธ/์ •์  ๋ฆฌ์†Œ์Šค ๋“ฑ์€ ํ•„ํ„ฐ๋ง ๋Œ€์ƒ์—์„œ ์ œ์™ธ ๊ฐ€๋Šฅ

๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ


profile
Here, My Pale Blue.๐ŸŒ

0๊ฐœ์˜ ๋Œ“๊ธ€