AOP
AOP (Aspect Oriented Programming)
AOP๋ Aspect Oriented Programming์ ์ฝ์๋ก ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
๊ด์ ์งํฅ์ ์ฝ๊ฒ ๋งํด ์ด๋ค ๋ก์ง์ ๊ธฐ์ค์ผ๋ก ํต์ฌ์ ์ธ ๊ด์ , ๋ถ๊ฐ์ ์ธ ๊ด์ ์ผ๋ก ๋๋์ด์ ๋ณด๊ณ ๊ทธ ๊ด์ ์ ๊ธฐ์ค์ผ๋ก ๊ฐ๊ฐ ๋ชจ๋ํํ๊ฒ ๋ค๋ ๊ฒ์ด๋ค.
๋ชจ๋์ ํต์ฌ-๋ถ๊ฐ์ ์ธ ๊ด์ ์ผ๋ก ๋๋๋ค.
์ฌ๊ธฐ์ ๋ชจ๋ํ๋ ์ด๋ค ๊ณตํต๋ ๋ก์ง์ด๋ ๊ธฐ๋ฅ์ ํ๋์ ๋จ์๋ก ๋ฌถ๋ ๊ฒ์ ๋งํ๋ค.
์๋ก๋ค์ด ํต์ฌ์ ์ธ ๊ด์ ์ ๊ฒฐ๊ตญ ์ฐ๋ฆฌ๊ฐ ์ ์ฉํ๊ณ ์ ํ๋ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ด ๋๋ค.
๋ํ ๋ถ๊ฐ์ ์ธ ๊ด์ ์ ํต์ฌ ๋ก์ง์ ์คํํ๊ธฐ ์ํด์ ํํด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ, ๋ก๊น , ํ์ผ ์ ์ถ๋ ฅ ๋ฑ์ ์๋ก ๋ค ์ ์๋ค.
AOP์์ ๊ฐ ๊ด์ ์ ๊ธฐ์ค์ผ๋ก ๋ก์ง์ ๋ชจ๋ํํ๋ค๋ ๊ฒ์ ์ฝ๋๋ค์ ๋ถ๋ถ์ ์ผ๋ก ๋๋์ด์ ๋ชจ๋ํํ๊ฒ ๋ค๋ ์๋ฏธ๋ค.
์ด ๋, ์์ค ์ฝ๋์์์ ๋ค๋ฅธ ๋ถ๋ถ์ ๊ณ์ ๋ฐ๋ณตํด์ ์ฐ๋ ์ฝ๋๋ค์ ๋ฐ๊ฒฌํ ์ ์๋ ๋ฐ ์ด๊ฒ์ ํฉ์ด์ง ๊ด์ฌ์ฌ (Crosscutting Concerns)๋ผ ๋ถ๋ฅธ๋ค.

AOP(Aspect-Oriented Programming)๋ ์ด๋ฌํ ํฉ์ด์ง ๊ด์ฌ์ฌ ๋ฌธ์ ๋ฅผ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์์ ๋ถ๋ฆฌํ์ฌ ํด๊ฒฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด๋ค.
์ฝ๋์ ์ค๋ณต์ ์ต๋ํ์ผ๋ก ํํผ
ํฉ์ด์ง ๊ด์ฌ์ฌ ๋ฌธ์ ๋ ๋ก๊น , ๋ณด์, ํธ๋์ญ์ ๊ด๋ฆฌ ๋ฐ ์บ์ฑ๊ณผ ๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๋ชจ๋ ๋๋ ๊ณ์ธต์ ๊ฑธ์ณ ์๋ ๊ธฐ๋ฅ์ด๋ค.
์์์ ๋ถ๊ฐ์ ์ธ ๊ด์ ์ผ๋ก ์์๋ฅผ ๋ ์ฝ๋๋ค
๊ธฐ์กด ํ๋ก๊ทธ๋๋ฐ์์๋ ํฉ์ด์ง ๊ด์ฌ์ฌ ๋ฌธ์ ๊ฐ ์ฝ๋ ๋ฒ ์ด์ค ์ ์ฒด์ ํฉ์ด์ ธ ์์ผ๋ฏ๋ก ์ฝ๋๋ฅผ ์ฝ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ณ ํ ์คํธํ๊ธฐ๊ฐ ๋ ์ด๋ ต๋ค.
AOP๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ฐํ์ ์ ์ฝ๋์ ๊ตฌํํ ์ ์๋ ์ธก๋ฉด์ผ๋ก ์ ์ํ์ฌ ๋ชจ๋ํํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
๊ฒฐ๊ตญ AOP์ ํต์ฌ ๊ฐ๋ ์ ์์์ ์๊ธฐํ ๋ชจ๋ ๋จ์์ Aspect๋ค.
๊ฐ ๋ชจ๋์๋ Advice์ Pointcut์ด ์๋ค.
Advice๋ ํด์ผ ํ ์ผ, ๊ธฐ๋ฅ์ ๋ํ๋ด๋ ๊ฒ์ด๋ค.
Pointcut์ด๋ ์ด๋์ ์ ์ฉํด์ผ ํ๋์ง๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด๋ค.(ex A๋ผ๋ ํด๋์ค์ Go๋ผ๋ ๋ฉ์๋)
Target์ด๋ ๊ฐ๊ฐ ํด๋์ค๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด๋ค.(ํด๋์ค A, B, C) ์ฆ, ์ ์ฉ์ด ๋๋ ๋์์ ๋ปํ๋ ์ฉ์ด์ด๋ค.
Join point๋ผ๋ ์ฉ์ด๋ ๋ผ์ด๋ค ์ง์ ์ ๋ปํ๋ค.(ex ๋ฉ์๋๋ฅผ ์คํํ ๋, ํ๋์์ ๊ฐ์ ๊ฐ์ ธ๊ฐ ๋ ๋ฑ๋ฑ)

AOP์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ: AOP๋ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์์ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ณด๋ค ๋ชจ๋ํํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ ๋ค.
์ฌ์ฌ์ฉ์ฑ: ๋ก์ง์ ํ ๋ฒ ์ ์ํ๊ณ ์ฌ๋ฌ ๋ถ๋ถ์ ์ ์ฉํ ์ ์์ผ๋ฏ๋ก ์ค๋ณต์ด ์ค์ด๋ค๊ณ ์ฌ์ฌ์ฉ์์ด ํฅ์๋๋ค.
์ ์ฐ์ฑ: ๋ฐํ์ ์ ํน์ Aspect๋ฅผ ์ถ๊ฐ, ์ ๊ฑฐ ๋๋ ์์ ํ ์ ์์ผ๋ฏ๋ก ๋ณํํ๋ ์๊ตฌ ์ฌํญ์ ๋ํ ์ ์ฐ์ฑ๊ณผ ์ ์์ฑ์ ์ ๊ณตํ๋ค.
ํฅ์๋ ์ฝ๋ ํ์ง: AOP๋ ์์ฉ๊ตฌ ์ฝ๋์ ์์ ์ค์ด๊ณ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์์ผ๋ก์จ ์ฝ๋๋ฒ ์ด์ค์ ํ์ง์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ ์ ์๋ค.
AOP์ ๋จ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ณต์ก์ฑ: AOP๋ ์ฝ๋๋ฒ ์ด์ค์ ์ถ๊ฐ ๋ณต์ก์ฑ์ ๋์ ํ์ฌ ๋๋ฒ๊น ์ด ์ด๋ ค์์ง ์ ์๋ค.
์ฑ๋ฅ ์ค๋ฒํค๋: ์๋น ํ๋ก์ธ์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ค์ํ ์ ์๋ค.
Last updated