λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ’»Study/Spring

AOP(Aspect Oriented Programming)의 κ°œλ…

μŠ€ν”„λ§μ„ 곡뢀할 λ•Œ DI와 ν•¨κ»˜ 항상 κ±°λ‘ λ˜λŠ” 것이 λ°”λ‘œ AOP이닀. AOPλŠ” 관점 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λΌλŠ” ν•˜λ‚˜μ˜ 방법둠이닀. μŠ€ν”„λ§μ„ μ‚¬μš©ν•˜λ©΄ AOP κ΅¬ν˜„μ„ μ‰½κ²Œ ν•  수 μžˆλ‹€.

 

μ§€κΈˆκΉŒμ§€λŠ” Object Oriented Programmingμ—λ§Œ 관심을 두고 μžˆμ—ˆλ‹€. 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ 톡해 μ‚¬μš©μžμ˜ μ›ν•˜λŠ” 업무λ₯Ό λΆ„μ„ν•΄μ„œ 그에 λŒ€ν•œ λ‘œμ§μ„ κ΅¬ν˜„ν•΄μ™”λ‹€λŠ” μ˜λ―Έμ΄λ‹€. ν•˜μ§€λ§Œ μ‚¬μš©μžμ˜ μš”κ΅¬μ‚¬ν•­ 외에도 개발자 λ˜λŠ” κ΄€λ¦¬μžκ°€ 개발과 μš΄μ˜μ„ μœ„ν•΄ ν•„μš”λ‘œν•˜λŠ” μ½”λ“œκ°€ 있고, μ΄λŸ¬ν•œ μ£Ό 업무 둜직 μ™Έμ˜ μ½”λ“œμ—λ„ 관심을 κ°€μ§€κ²Œ λ˜μ—ˆλ‹€. => 관점 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°

μ£Ό μ—…무(μ‚¬μš©μžμ˜ κ΄€μ )μ—μ„œ λ‹€λ₯Έ κ΄€μ (둜그 μ²˜λ¦¬, λ³΄μ•ˆ μ²˜λ¦¬, νŠΈλžœμž­μ…˜ μ²˜λ¦¬ λ“±)μœΌλ‘œλ„ λ‚΄μš©μ΄ ν™•μž₯λœλ‹€.

이런 λ‘œμ§λ“€μ€ μ‚¬μš©μžμ˜ μš”κ΅¬μ‚¬ν•­ μ•ž 뒀에 μœ„μΉ˜ν•˜λŠ” 보쑰 업무가 λœλ‹€. ν”„λ‘œκ·Έλž¨μ€ μœ„μ—μ„œ μ•„λž˜λ‘œ μ§„ν–‰λ˜λŠ”λ°, μ΄λŸ¬ν•œ 보쑰 업무듀은 ν”„λ‘œκ·Έλž¨μ˜ 흐름 λ°©ν–₯κ³Ό 크둜슀 되기 λ•Œλ¬Έμ— Cross-cutting Concern이라고 λΆ€λ₯Έλ‹€. μ•„λž˜ κ·Έλ¦Όμ—μ„œ νŒŒλž€μƒ‰ μ˜μ—­μ΄ μ£Ό 둜직, λ…Έλž€μƒ‰ 뢀뢄이 보쑰 업무이닀.

 

 

 

 

 

보쑰 업무듀은 μ£Ό 업무 μ•ž λ’€λ‘œ 뺐닀 κΌˆλ‹€κ°€ μžμœ λ‘œμ›Œμ•Ό ν•  λ•Œκ°€ μžˆλ‹€. 예λ₯Ό λ“€μ–΄ 둜그λ₯Ό 남길 λ•Œλ„ 있고 μ•ˆ 남길 λ•Œλ„ 있고, λ³΄μ•ˆ 처리λ₯Ό ν•˜κ±°λ‚˜ ν•˜μ§€ μ•Šμ„ 수 μžˆλ‹€. κ³Όκ±°μ—λŠ” 이런 μž‘μ—…μ„ ν•  λ•Œ μ»€νŒ…μ— μžμœ λ‘­μ§€ μ•Šμ•˜λ‹€. 둜그 λ‚¨κΈ°λŠ” μž‘μ—…μ„ λΉΌμ•Όν•  λ•Œλ©΄ 직접 μ£Ό 업무 μ†ŒμŠ€ μ½”λ“œ μ•ž λ’€μ˜ 둜그 처리 μ†ŒμŠ€λ₯Ό 주석을 ν•˜λŠ” μ‹μœΌλ‘œ 처리λ₯Ό ν•΄μ•Όλ§Œ ν–ˆλ‹€. μ†ŒμŠ€ μ½”λ“œλ₯Ό 직접 μˆ˜μ •ν•΄μ•Ό ν•˜λ―€λ‘œ μ†ŒμŠ€ μ½”λ“œλ₯Ό κ°€μ§€κ³  μžˆλŠ” μ‚¬λžŒλ§Œ μˆ˜μ •μ΄ κ°€λŠ₯ν•˜λ©°, μž¬λ°°ν¬λ„ λ²ˆκ±°λ‘­λ‹€λŠ” 단점이 μžˆμ—ˆλ‹€. ν•˜μ§€λ§Œ AOP κ΅¬ν˜„μœΌλ‘œ Core Concernκ³Ό Cross-cutting Concern을 λ”°λ‘œ 떼어놓아 μœ μ§€ 보수λ₯Ό μ‰½κ²Œ ν•  수 있게 λ˜μ—ˆμœΌλ©°, 이 μž‘μ—…μ„ 자유둭게 ν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” 것이 λ°”λ‘œ μŠ€ν”„λ§μ΄λ‹€. μžλ°”λ§Œ 가지고도 AOP κ΅¬ν˜„μ„ ν•  수 μžˆμœΌλ‚˜ μŠ€ν”„λ§μ„ μ‚¬μš©ν•˜λŠ” 것이 더 νŽΈλ¦¬ν•˜λ‹€. 항상 κ·Έλž¬λ“―μ΄..

 

 

 

 

 

 

proxyλ₯Ό 톡해 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ Core Concern μ•ž 뒀에 직접 μ½”λ“œλ₯Ό 꽂아놓지 μ•Šμ•„λ„ μ‹€ν–‰ μˆœμ„œμƒ 마치 μ£Ό 업무 μ•ž 뒀에 μ½”λ“œλ₯Ό 꽂아놓은 κ²ƒμ²˜λŸΌ 싀행이 κ°€λŠ₯ν•˜λ‹€. μ£Ό 업무 μ•žμ— μ‹€ν–‰λ˜μ–΄μ•Ό ν•  μ½”λ“œλ₯Ό A, 뒀에 μ‹€ν–‰λ˜μ–΄μ•Ό ν•  μ½”λ“œλ₯Ό B라고 ν–ˆμ„ λ•Œ A->μ£Ό 업무->B -> A -> μ£Ό 업무 -> B μˆœμ„œλ‘œ 진행이 λœλ‹€λŠ” 것이닀.

 

 


λ‰΄λ ‰μ²˜ μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ κ°•μ˜λ₯Ό λ“£κ³  μ •λ¦¬ν•œ κ²Œμ‹œκΈ€μž…λ‹ˆλ‹€.

www.youtube.com/user/newlec1