Aspect-oriented Programming (AOP)์ OOP๋ฅผ ๋ณด์ํ๋ ์๋จ์ผ๋ก, ํฉ์ด์ง Aspect๋ฅผ ๋ชจ๋ํ ํ ์ ์๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ.
ํฉ์ด์ง ๊ด์ฌ์ฌ (Crosscutting *Concerns) *Concerns : ๋น์ทํ ์ฝ๋, ๋น์ทํ ํธ์ถ ๋ฑ๋ฑ.
AOP๋ฅผ ์ ์ฉ ํ๋ฉด?
Aspect๋ก ํฉ์ด์ง ๊ฒ๋ค์ ํ๊ณณ์ผ๋ก ๋ชจ์๋ค.
AOP ์ฃผ์ ๊ฐ๋
- Aspect ์ Target
- Advice
- Join point ๊ณผ Pointcut
Aspect : ํฉ์ด์ง ๊ด์ฌ์ฌ๋ฅผ ํ๊ณณ์ผ๋ก ๋ชจ๋ํ ํ ๊ฒ.
Advice : ์ด๋ค ์ผ์ ํด์ผ ํ๋์ง์ ๋ํ ์ ๋ณด.
Join point : ์์ฑ์ ํธ์ถํ๊ธฐ ์ง์ , ์์ฑ์๋ฅผ ํธ์ถํ์๋, ํ๋์์ ๊ฐ์ ๊ฐ์ ธ๊ฐ์๋...๋ฑ๋ฑ ์ฌ๋ฌ๊ฐ์ง ํฉ๋ฅ์ .
Pointcut: A๋ผ๋ ํด๋์ค์ b๋ผ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋์๋ง advice๋ฅผ ์ ์ฉํ๊ฒ ๋ค. ๋ผ๊ณ ์๋ ค์ฃผ๋ ๊ฒ.
Target : ์ ์ฉ์ด ๋๋ ๋์ (ex. Class A , B, C ...)
AOP ๊ตฌํ์ฒด
- ์๋ฐ
- AspectJ
- ์คํ๋งAOP
AOP ์ ์ฉ ๋ฐฉ๋ฒ
- ์ปดํ์ผ
- ๋ก๋ ํ์
- ๋ฐํ์