Filter
Dispatcher Servlet์ request๊ฐ ์ ๋ฌ๋๊ธฐ ์ /ํ์ ์คํ๋ ๋ก์ง์ ์ ์ํ ์ ์๋ ๊ฐ์ฒด
chaining ํํ๋ก ์์๋๋ก ์ ์ฉ๋๋ค.
๋ฐํ ํ์ ์ void๋ก, ๋ค์ Filter Chain์ ํธ์ถํ์ง ์์ผ๋ฉด ์ ๋ฌ์ด ์ข ๋ฃ๋๋ค. chain์ ํธ์ถํ์ง ์๊ณ response์ status code๋ฅผ ์ค์ ํจ์ผ๋ก์จ ์ ํจํ์ง ์์ ์์ฒญ์ ์ฌ์ ์ ์ฐจ๋จํ ์ ์๋ค.
chaining์ ํ๋ผ๋ฏธํฐ๋ก๋ request, response๊ฐ ์ ๋ฌ๋๋ค.
๋ฐ๋ผ์, Filter์์๋ request, response ๊ฐ์ฒด ์์ฒด๋ฅผ ์กฐ์(๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ฐ๊ฟ์น๊ธฐ ๋ฑ)ํ ์ ์๋ค.
โญ ํํฐ๋ ์น ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ๊ฒ์ด์ง๋ง,
DelegatingFilterProxy
์ ๋ฑ์ฅ ์ดํ, ๋ ์คํ๋ง ๋ถํธ๊ฐ ๋ด์ฅ ํฐ์บฃ์ ํฌํจํ๊ธฐ ์์ํ ์ดํ๋ก ๋น์ผ๋ก ๋ฑ๋ก๋ ์ ์๊ฒ ๋์๋ค.DelegatingFilterProxy
๋ ๋ด๋ถ์ ์ผ๋ก ๋น์ผ๋ก ๋ฑ๋ก๋ ์ค์ ํํฐ์ ๋ก์ง์ ํธ์ถํ๋ ํ๋ก์ ํํฐ์ด๋ค.์คํ๋ง ๋ถํธ๊ฐ ๋ด์ฅ ํฐ์บฃ์ ํฌํจํ ์ดํ๋ก ์น ์ปจํ ์ด๋ ์ญ์ ์คํ๋ง ์ปจํ ์ด๋์ ๊ด๋ฆฌ ์์ญ์ด ๋์๊ณ , ์ดํ๋ก๋
DelegatingFilterProxy
์์ด๋ ํํฐ๋ฅผ ๋น์ผ๋ก ๋ฑ๋กํ ์ ์๊ฒ ๋์๋ค.
Interceptor
Dispatcher Servlet์ด Controller์ ์์ฒญ์ ์ ๋ฌํ๊ธฐ ์ /ํ, ๋ทฐ๊ฐ ๋ชจ๋ ๋ก๋๋ ํ ์คํ๋ ๋ก์ง์ ์ ์ํ ์ ์๋ ๊ฐ์ฒด
Dispatcher Servlet์ ์ํด ์์ฐจ์ ์ผ๋ก ํธ์ถ๋๋ค.
๋ฐํ ํ์ ์ boolean์ผ๋ก, true๋ฅผ ๋ฐํํ๋ฉด ์์ฒญ์ด ์ด์ด์ง๊ณ , false๋ฅผ ๋ฐํํ๋ฉด ์ค๋จ๋๋ค.
๋๋ฌธ์ Filter์ ๋ฌ๋ฆฌ request, response ๊ฐ์ฒด ์์ฒด๋ฅผ ์กฐ์ํ ์๋ ์๋ค.
๋์ ๊ทธ ๋ด๋ถ์ ๊ฐ์ ์กฐ์ํ๋ ๊ฒ์ ๊ฐ๋ฅํ๋ค.
Filter๊ฐ Bean์ผ๋ก ๋ฑ๋ก๋ ์ ์๊ธฐ ์ด์ ์๋, ๋ค๋ฅธ Bean์ ๋ก์ง์ ํธ์ถํด์ผ ํ ๋ Interceptor๋ฅผ ์ฌ์ฉํ์ผ๋, ๊ทธ ์ดํ๋ก๋ ๋ ์ค ๋ฌด์์ ์ฌ์ฉํ๋ ์๊ด์ด ์์ด์ก๋ค. ๋๋ฌธ์ ์ ํจํ์ง ์์ ์์ฒญ์ ์ณ ๋ด๋ ์ฉ๋๋ก๋ ๊ฑฐ์ Filter๋ฅผ ์ฌ์ฉํ๋ ํธ์ด๋ค.
Filter๊ฐ ๋ ์๋จ์์ ๊ฑธ๋ฌ์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
Spring AOP
AOP๋ ํก๋จ ๊ด์ฌ(Aspect) ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ์๋ก, ๊ด์ฌ์ฌ ๋จ์๋ก ๋ก์ง์ ๋ถ๋ฆฌํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ด๋ค.
์ฌ์ค์ Filter์ Interceptor์ ์๋๋ฅผ ๋ดํฌํ๋ ๊ฐ๋ ์ด๋ค.
Filter, Interceptor๋ request, response์ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ๊ด์ฌ์ฌ๋ฅผ ๋ค๋ฃจ๋ ๊ธฐ์ ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
AOP ์์ฒด๋ ๋ฉ์๋, ํ๋, ์์ฑ์ ๋ฑ ์ฌ๋ฌ ๋ ๋ฒจ์ ์ ์ฉ๋ ์ ์์ผ๋, Spring AOP๋ ๋ฉ์๋ ๋ ๋ฒจ์ ์ ์ฉ๋ง ๊ฐ๋ฅํ๋๋ก ์ ํํ๋ค.
์ด๋ Spring์ด IoC Container์ ์ํด Dependency Injection ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด(Bean)๋ค์ ๊ด๋ฆฌํ๋ ํ๋ ์์ํฌ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๋ํ, AOP์ ๋ก์ง์ ํธ์ถํ๊ธฐ ์ํด ํ๋ก์ ๋ฐฉ์์ ์ด์ฉํ๋ค.
ํ๋ก์ ๋ฐฉ์์ด๋, CGLIB ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ํด๋น ํ๋ก์ ๊ฐ์ฒด์์ AOP์ Advice ๋ก์ง์ ์ํํ๊ธฐ ์ ๋๋ ์ดํ์ ๋ณธ ๊ฐ์ฒด(ํ๊ฒ ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฆ)์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ ๋งํ๋ค.
Last updated