[Spring Framework] Filter ์™€ Interceptor

2024. 1. 11. 17:25ยท๐ŸŒฟSpring/Spring Framework
๋ชฉ์ฐจ
  1. 1. ํ•„ํ„ฐ(Filter)
  2. 2. ์ธํ„ฐ์…‰ํŠธ(Interceptor)
  3. 3. ํ•„ํ„ฐ(Filter) vs ์ธํ„ฐ์…‰ํ„ฐ(Interceptor) ์ฐจ์ด
๋ฐ˜์‘ํ˜•

 

Spring์€ ๊ณตํ†ต์ ์œผ๋กœ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ์จ ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค.

๊ทธ ์ค‘์— ํ•„ํ„ฐ(Filter)์™€ ์ธํ„ฐ์…‰ํ„ฐ(Interceptor)์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

1. ํ•„ํ„ฐ(Filter)


1) ํ•„ํ„ฐ(Filter) ๋ž€?

 

- ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ

- ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ํ•„ํ„ฐ๋กœ ์ธ์ฆ ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋‹ˆ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ์˜ ํ•„ํ„ฐ์— ๋Œ€ํ•ด ๊ธฐ๋ก

- Spring Framework๋Š” ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์ด Dispatcher Servlet์— ์˜ํ•ด Controller์— ๋งคํ•‘

- Filter์˜ ์š”์ฒญ์ด Dispatcher Servlet์— ์˜ํ•ด ๋‹ค๋ค„์ง€๊ธฐ ์ „, ํ›„์— ๋™์ž‘

 

2) ํ•„ํ„ฐ(Filter)๋Š” ์–ด๋””์— ์‚ฌ์šฉํ•˜๋‚˜?

 

2-1) ํ•„ํ„ฐ ์ธํ„ฐํŽ˜์ด์Šค์˜ 3๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ

  • init() : Filter๊ฐ€ ์ƒ์„ฑ ๋  ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ๋ฉ”์†Œ๋“œ
  • dofilter() : Request, Response๊ฐ€ ํ•„ํ„ฐ๋ฅผ ๊ฑฐ์น  ๋•Œ ์ˆ˜ํ–‰ ๋˜๋Š” ๋ฉ”์†Œ๋“œ
  • destory() : Filter๊ฐ€ ์†Œ๋ฉธ๋  ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ๋ฉ”์†Œ๋“œ

 

2-2) ํ•„ํ„ฐ(Filter)์˜ ์šฉ๋„ ๋ฐ ์˜ˆ์‹œ

  1. ๊ณตํ†ต ๋œ ๋ณด์•ˆ ๋ฐ ์ธ์ฆ/์ธ๊ฐ€ ๊ด€๋ จ ์ž‘์—…
  2. ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•œ ๋กœ๊น…(Logging) ๋˜๋Š” ๊ฐ์‚ฌ
  3. ์ด๋ฏธ์ง€ / ๋ฐ์ดํ„ฐ ์••์ถ• ๋ฐ ๋ฌธ์ž์—ด ์ธ์ฝ”๋”ฉ
  4. Spring ๊ณผ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ

3) ํ•„ํ„ฐ(Filter) ๊ตฌํ˜„ ๋กœ๊ทธ

3) ํ•„ํ„ฐ ์ฒด์ธ (Filter Chain)

 

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•„ํ„ฐ๊ฐ€ ๋ชจ์—ฌ์„œ ํ•˜๋‚˜์˜ ์ฒด์ธ์„ ํ˜•์„ฑ ํ•  ๋•Œ ์ฒซ๋ฒˆ์งธ ํ•„ํ„ฐ๊ฐ€ ๋ณ€๊ฒฝํ•˜๋Š” ์š”์ฒญ ์ •๋ณด๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ์ •๋ณด๊ฐ€ ๋˜์ง€๋งŒ, ์ฒด์ธ์˜ ๋‘๋ฒˆ์งธ ํ•„ํ„ฐ๊ฐ€ ๋ณ€๊ฒฝํ•˜๋Š” ์š”์ฒญ ์ •๋ณด๋Š” ์ฒซ๋ฒˆ์งธ ํ•„ํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ๋ณ€๊ฒฝ๋œ ์š”์ฒญ ์ •๋ณด
  • User๊ฐ€ ๋ณด๋‚ธ Request(์š”์ฒญ) ์ •๋ณด๋Š” ๋ณ€๊ฒฝ์— ๋ณ€๊ฒฝ์— ๋ณ€๊ฒฝ์„ ๊ฑฐ๋“ญํ•˜๊ฒŒ ๋œ๋‹ค.
  • Response ์‹œ, ํ•„ํ„ฐ์˜ ์ ์šฉ ์ˆœ์„œ๊ฐ€ ์š”์ฒญ ๋•Œ์™€๋Š” ๋ฐ˜๋Œ€๋กœ ๋Œ์•„ ์˜จ๋‹ค.

 

FilterRegistrationBean

 

- Spring Framework ์—์„œ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜, ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ๋ฅผ ๋“ฑ๋ก ํ•  ๋•Œ ์‚ฌ์šฉ

  - ํ•„ํ„ฐ์˜ URL ํŒจํ„ด, ํ•„ํ„ฐ ์ˆœ์„œ, ์ดˆ๊ธฐ ๋งค๊ฐœ ๋ณ€์ˆ˜ ๋“ฑ์„ ์„ค์ • ๊ฐ€๋Šฅ

@Bean
    public FilterRegistrationBean firstFilterRegister() {
        
        FilterRegistrationBean registrationBean = new FilterRegistrationBean(new FirstFilter());
        //Bean์˜ ๋“ฑ๋ก ์ˆœ์„œ๋ฅผ ์„ค์ • ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ -> ์ž‘์€ ์ˆซ์ž ์ผ์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„์ง„๋‹ค.
        registrationBean.setOrder(1);
        
        return registrationBean;
    }

 

 

2. ์ธํ„ฐ์…‰ํŠธ(Interceptor)


1) ์ธํ„ฐ์…‰ํŠธ(Interceptor) ๋ž€?

 

- Spring์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ , Dispatcher Servlet ์ด ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „๊ณผ ํ›„์— Request์™€ Response์„ ์ฐธ์กฐ ํ•˜๊ฑฐ๋‚˜ ๊ฐ€๊ณต ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต

 

2) ์ธํ„ฐ์…‰ํŠธ(Interceptor)๋Š” ์™œ ์‚ฌ์šฉ ํ•˜๋Š”๊ฐ€?

 

(1)  ์ธํ„ฐ์…‰ํŠธ(Interceptor) ์ธํ„ฐํŽ˜์ด์Šค 3๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ

  1. preHandle() : ์ปจํŠธ๋กค๋Ÿฌ ์ด์ „์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ „์ฒ˜๋ฆฌ ์ž‘์—…์ด๋‚˜ ์š”์ฒญ ์ •๋ณด๋ฅผ ๊ฐ€๊ณตํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
  2. postHandle() : ์ปจํŠธ๋กค๋Ÿฌ ํ˜ธ์ถœ ๋œ ํ›„์— ์‹คํ–‰, ์ปจํŠธ๋กค๋Ÿฌ ์ดํ›„์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ํ›„ ์ฒ˜๋ฆฌ ์ž‘์—…์ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉ
  3. afterCompletion() : ๋ชจ๋“  View์— ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ผ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„์— ์‹คํ–‰ 

(2)  ์ธํ„ฐ์…‰ํŠธ(Interceptor) ์šฉ๋„์˜ & ์˜ˆ์‹œ

  • ์„ธ๋ถ€์ ์ธ ๋ณด์•ˆ ๋ฐ ์ธ์ฆ / ์ธ๊ฐ€ ๊ณตํ†ต ์ž‘์—…
  • API ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๋กœ๊น…(Logging) ๋˜๋Š” ๊ฐ์‚ฌ
  • Controller๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ์ •๋ณด(Data)์˜ ๊ฐ€๊ณต

3) ์ธํ„ฐ์…‰ํŠธ(Interceptor) ๊ตฌํ˜„ ๋กœ๊ทธ

 

- Filter > Dispatcher Servlet > Intercepotor > Resource ์œผ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋กœ๊ทธ๋ฅผ ํ™•์ธ ๊ฐ€๋Šฅ

 

3. ํ•„ํ„ฐ(Filter) vs ์ธํ„ฐ์…‰ํ„ฐ(Interceptor) ์ฐจ์ด


๋ฐ˜์‘ํ˜•

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

[Spring Framework] Spring Boot 2.* vs 3.*  (0) 2024.06.11
[Spring Framework] Spring Boot์˜ ์‹œ์ž‘ ํ”„๋กœ์„ธ์Šค  (0) 2024.05.13
[Spring Framework - Thymeleaf] Decoupled Logic  (0) 2024.01.21
[Spring Framework - Thymeleaf] Thymeleaf ๋ž€?  (0) 2024.01.18
[Spring Framework] Transction  (1) 2024.01.11
  1. 1. ํ•„ํ„ฐ(Filter)
  2. 2. ์ธํ„ฐ์…‰ํŠธ(Interceptor)
  3. 3. ํ•„ํ„ฐ(Filter) vs ์ธํ„ฐ์…‰ํ„ฐ(Interceptor) ์ฐจ์ด
'๐ŸŒฟSpring/Spring Framework' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring Framework] Spring Boot์˜ ์‹œ์ž‘ ํ”„๋กœ์„ธ์Šค
  • [Spring Framework - Thymeleaf] Decoupled Logic
  • [Spring Framework - Thymeleaf] Thymeleaf ๋ž€?
  • [Spring Framework] Transction
Boom's
Boom's
๋ถ„์•ผ๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๊ณ  ํ•ญ์ƒ ๋ฐฐ์šฐ๊ณ , ์‘์šฉํ•˜๊ณ  ์‹ถ์€ Boom ๊ฐœ๋ฐœ์ž ๋ธ”๋กœ๊ทธ
Boom's
Boom's Devlog
Boom's
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ์นดํ…Œ๊ณ ๋ฆฌ (26)
    • ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป Re:Mind (5)
      • ๐Ÿ”ฅ ํšŒ๊ณ  (3)
      • ๐Ÿ“• ์ˆ˜๋ฃŒ์ฆ (2)
    • ๐Ÿ“ Language (5)
      • Java (4)
    • ๐ŸŒฟSpring (8)
      • Spring Framework (6)
      • Spring Security (0)
      • Spring Data JPA (2)
    • ๐ŸŒบ Laravel (1)
    • Database (4)
      • SQL (1)
      • Redis (2)
    • ๐Ÿ“ Infra (2)
      • DevOps (1)
      • Docker (0)
      • AWS (0)
      • ArgoCD (1)
    • Etc (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • Github

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์‹
  • springboot
  • Redis
  • spring
  • redis-cli
  • springframework
  • argocd
  • ๊ฐœ๋ฐœ
  • ๋ช…๋ น์–ด
  • Thyemelaf
  • Database
  • ORM
  • NoSQL
  • JPA
  • java
  • cicd
  • springframewokr
  • php
  • ํšŒ๊ณ ๋ก
  • HTML
  • ๋ ˆ๋””์Šค
  • Hibernate
  • decoupledLogic
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ง€์‹
  • OSIV
  • laravel
  • springdatajpa
  • gitops
  • SpringFramwork
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLOยท Designed By์ •์ƒ์šฐ.v4.5.2
Boom's
[Spring Framework] Filter ์™€ Interceptor
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.