์คํ๋ง AOP๋ Java ๊ธฐ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ Aspect-Oriented Programming(AOP) ์ง์์ ์ ๊ณตํ๋ ํ๋ ์์ํฌ ์ค ํ๋์ด๋ค. Spring Framework์ ์ผ๋ถ๋ก ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ์ ์ฝ๋ ์ฌ์ฌ์ฉ์ ๋๋ชจํ๋ค.
Aspect-Oriented Programming(AOP)์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ ํจ๋ฌ๋ค์์ผ๋ก, ํก๋จ ๊ด์ฌ์ฌ(cross-cutting concerns)๋ฅผ ๋ชจ๋ํํ๊ณ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
ํก๋จ ๊ด์ฌ์ฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๊ณ์ธต์ด๋ ๋ชจ๋์์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ด๋ ๊ด์ฌ์ฌ๋ฅผ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค๋ฉด, ๋ก๊น , ๋ณด์, ํธ๋์ญ์ ๊ด๋ฆฌ ๋ฑ์ด ์๋ค.
ํก๋จ ๊ด์ฌ์ฌ๋ฅผ ์ ์ํ ๋ชจ๋๋ก, Advice์ Pointcut์ผ๋ก ๊ตฌ์ฑ๋๋ค.
ํก๋จ ๊ด์ฌ์ฌ๊ฐ ์ ์ฉ๋๋ ์ง์ ์ผ๋ก, ๋ฉ์๋ ํธ์ถ์ด๋ ์์ธ ์ฒ๋ฆฌ ๋ฑ์ด ๋ ์ ์๋ค.
์ค์ ํก๋จ ๊ด์ฌ์ฌ์ ์ฝ๋๋ก, Before, After, Around ๋ฑ ๋ค์ํ ์ข ๋ฅ์ ์คํ ์์ ์ ๊ฐ์ง ์ ์๋ค.
์ด๋ค Join Point์ Advice๊ฐ ์ ์ฉ๋ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ํํ์์ด๋ค.
Advice๊ฐ ์ ์ฉ๋๋ ๋์ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค.
Target ๊ฐ์ฒด์ Advice๋ฅผ ์ ์ฉํ ํ ์์ฑ๋๋ ๊ฐ์ฒด๋ก, ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ ๊ฐ์ฒด์ด๋ค.