AOP(Aspect Oriented Programming)
๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ

์ ์
ํน์ ํจ์ ํธ์ถ ์ ์ด๋ ๊ณตํต์ ์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋ ์ฌ์ฉ
ํ๋ก์ ํจํด์ด ์ ์ฉ๋จ

Spring AOP Tutorial for Beginners - Step by Step with Example
์ฅ์
์ฝ๋ ์ฌ์ฌ์ฉ์ฑ ๋์์ง์ผ๋ก ์ธํ ์ ์ง๋ณด์ ์ฉ์ด
์ฌ์ฉ ์ฌ๋ก
๋ก๊น
ํธ๋์ญ์
์ธ์ฆ
OOP๋ก ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ค์ด ๋ถ๋ถ์ AOP๋ก ๋์ ํ์ฌ ์ฝ๊ฒ ๊ณตํต ๊ธฐ๋ฅ์ ์ถ๊ฐ/์์ /์ญ์ ํ ์ ์๋๋ก ํจ
๋์ ๊ณผ์

๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ค ๋น ํ์ฒ๋ฆฌ๊ธฐ์๊ฒ ์ ๋ฌ
์ด๋๋ฐ์ด์ ๋ด์ ํฌ์ธํธ์ปท์ ์ด์ฉํด ์ ๋ฌ๋ฐ์ ๋น์ด ํ๋ก์ ์ ์ฉ ๋์์ธ์ง ํ์ธ
ํ๋ก์ ์์ฑ ๋์ ๋น๋ค์ ๋์์ผ๋ก ํ๋ก์ ๊ฐ์ฒด๋ฅผ ์์ฑ
ํ๋ก์๋ฅผ ์์ฑํ ๋น์ด๋ผ๋ฉด ํ๋ก์๋ฅผ, ํ๋ก์๋ฅผ ์์ฑํ์ง ์์ ๋น์ด๋ผ๋ฉด ๊ทธ๋ฅ ๋น์ ๋ฐํ
๋น ํ์ฒ๋ฆฌ๊ธฐ์๊ฒ ์ ๋ฌ๋ฐ์ ๊ฐ์ฒด๋ฅผ ์ปจํ ์ด๋์ ๋น์ผ๋ก ๋ฑ๋ก
๊ด๋ จ ๊ธฐ๋ฅ๋ค
Target
์ด๋ค Advice๊ฐ ์ ์ฉ๋๋ ๊ฐ์ฒด
Advice
AspectJ์์ ํน์ JoinPoint์์ ์คํ๋๋ ์ฝ๋ ์ด๋ @Before, @After, @AfterThrowing, @AfterReturning ๋ฑ๊ณผ ๊ฐ์ด ์ฌ์ฉ๋ ์ ์์
JoinPoint
ํ๋ก๊ทธ๋จ ์คํ ์ค์ ์ถ๊ฐ ๋์์ ์ถ๊ฐํ ์ ์๋ ์ง์ ๋ฉ์๋ ๋งค๊ฐ๋ณ์, ๋ฐํ ๊ฐ ๋๋ ๋ฐ์ํ ์์ธ์ ๊ฐ์ ์ฃผ์ด์ง JoinPoint์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ์ ๋ํ ๋ฐ์ฌ์ ์ธ ์ ๊ทผ์ ์ ๊ณต
PointCut
JoinPoint์ ์งํฉ์ ์๋ฏธํ๋ฉฐ, ์ด๋ค Advice๊ฐ ์ ์ฉ๋ ์ง์ ์ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋จ
Advisor
๋จ์ผ ์กฐ์ธ์ด ํฌํจ๋ ์์ ์์ฒด ํฌํจํ Aspect์ ํด๋น. ์ง์ ์ ์ธ ๊ธฐ๋ฅ์ ์ํํ๋ ๊ฒ์ด ์๋
Weaving
Aspect๋ฅผ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ๋๋ ๊ฐ์ฒด์ ์ฐ๊ฒฐํ์ฌ ์กฐ์ธ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์
๋ชจ๋
GCLib, AspectJ
AspectJ
ํฌ์ธํธ์ปท ํํ์
Declaring a Pointcut :: Spring Framework
์ด๋๋ฐ์ด์ค
After
๋ฉ์๋๊ฐ ๋ฐํ๋๊ฑฐ๋ ์์ธ ์ํฉ์ด ๋ฐ์ํ ํ ํธ์ถ
AfterReturning
๋ฉ์๋๊ฐ ๋ฐํ๋ ์ดํ์ ํธ์ถ
AfterThrowing
๋ฉ์๋๊ฐ ์์ธ ์ํฉ์ ๋ฐ์์ํจ ์ดํ์ ํธ์ถ
Before
๋ฉ์๋๊ฐ ํธ์ถ๋๊ธฐ ์ด์ ์ ํธ์ถ
Around
๋ฉ์๋์ ํธ์ถ ์ ๊ณผ ๋ฐํ๋๊ฑฐ๋ ์์ธ ์ํฉ ์ดํ์ ํธ์ถ
์ฐธ๊ณ
Core Technologies :: Spring Framework


