[Spring] AOPλž€

EBΒ·2021λ…„ 6μ›” 2일
0

πŸ“ŒAOP(Asepect Oriented Programming)

: 뢀가적인 κ³΅ν†΅μ½”λ“œλ“€μ„ 효율적으둜 관리

νš‘λ‹¨ 관심(Crosscutting Concerns) : λ©”μ†Œλ“œλ§ˆλ‹€ κ³΅ν†΅μœΌλ‘œ λ“±μž₯ν•˜λŠ” λ‘œκΉ…μ΄λ‚˜ μ˜ˆμ™Έ, νŠΈλžœμž­μ…˜ 처리 같은 μ½”λ“œλ“€μ„

핡심 관심(Core Concerns) : μ‚¬μš©μžμ˜ μš”μ²­μ— 따라 μ‹€μ œλ‘œ μˆ˜ν–‰λ˜λŠ” 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직

πŸ“ŒAOP 라이브러리 μΆ”κ°€

pom.xml μΆ”κ°€

applicationContext.xml μΆ”κ°€

πŸ“ŒAOP μš©μ–΄μ •λ¦¬

쑰인포인트(JoinPoint)
:ν΄λΌμ΄μ–ΈνŠΈκ°€ ν˜ΈμΆœν•˜λŠ” λͺ¨λ“  λΉ„μ¦ˆλ‹ˆμŠ€ λ©”μ†Œλ“œ.

포인트컷(PointCut)
:어디에 곡톡 관심 κΈ°λŠ₯을 μ‚½μž…ν• μ§€ μ •μ˜

μ–΄λ“œλ°”μ΄μŠ€(Advice)
:μ–Έμ œ 곡톡 관심 κΈ°λŠ₯을 핡심 λ‘œμ§μ— μ μš©ν• μ§€ μ •μ˜

μœ„λΉ™(Weaving)
:μ–΄λ“œλ°”μ΄μŠ€λ₯Ό 핡심 둜직 μ½”λ“œμ— μ μš©ν•˜λŠ” 것. 즉 곡톡 μ½”λ“œλ₯Ό 핡심 둜직 μ½”λ“œμ— μ‚½μž…ν•˜λŠ” 것이닀.

μ• μŠ€νŒ©νŠΈ(Aspect) λ˜λŠ” μ–΄λ“œλ°”μ΄μ €(Advisor)
:μ• μŠ€νŒ©νŠΈλŠ” 포인트컷과 μ–΄λ“œλ°”μ΄μŠ€μ˜ κ²°ν•©.
μ–΄λ–€ 포인트컷 λ©”μ†Œλ“œμ— λŒ€ν•΄μ„œ μ–΄λ–€ μ–΄λ“œλ°”μ΄μŠ€ λ©”μ†Œλ“œλ₯Ό 싀행할지 κ²°μ •ν•œλ‹€.

πŸ“Œμ–΄λ“œλ°”μ΄μŠ€ λ™μž‘ μ‹œμ 

Before : λΉ„μ¦ˆλ‹ˆμŠ€ λ©”μ†Œλ“œ μ‹€ν–‰ μ „ λ™μž‘
After :

  • After Returning :λΉ„μ¦ˆλ‹ˆμŠ€ λ©”μ†Œλ“œκ°€ μ„±κ³΅μ μœΌλ‘œ λ¦¬ν„΄λ˜λ©΄ λ™μž‘
  • After Throwing :λΉ„μ¦ˆλ‹ˆμŠ€ λ©”μ†Œλ“œ μ‹€ν–‰ 쀑 μ˜ˆμ™Έκ°€ λ°œμƒν•˜λ©΄ λ™μž‘ (try~ catch λΈ”λ‘μ—μ„œ catch 블둝 ν•΄λ‹Ή)
  • After : λΉ„μ¦ˆλ‹ˆμŠ€ λ©”μ†Œλ“œκ°€ μ‹€ν–‰λœ ν›„ , 무쑰건 μ‹€ν–‰ (try~catch κ΅¬λ¬Έμ—μ„œ finally 블둝 ν•΄λ‹Ή)

Around : λ©”μ†Œλ“œ 호좜 자체λ₯Ό κ°€λ‘œμ±„ λΉ„μ¦ˆλ‹ˆμŠ€ λ©”μ†Œλ“œ μ‹€ν–‰ 전후에 μ²˜λ¦¬ν•  둜직 μ‚½μž…κ°€λŠ₯

πŸ“Œν¬μΈνŠΈμ»· ν‘œν˜„μ‹

1. λ¦¬ν„΄νƒ€μž… 지정

* : λͺ¨λ“  λ¦¬ν„΄νƒ€μž… ν—ˆμš©
void : λ¦¬ν„΄νƒ€μž…μ΄ void인 λ©”μ†Œλ“œ 선택
!void : λ¦¬ν„΄νƒ€μž…μ΄ voidκ°€ μ•„λ‹Œ λ©”μ†Œλ“œ 선택

2. νŒ¨ν‚€μ§€ 지정

com.springbook.biz : μ •ν™•ν•˜κ²Œ com.springbook.biz선택
com.springbook.biz.. : com.springbook.biz νŒ¨ν‚€μ§€λ‘œ μ‹œμž‘ν•˜λŠ” λͺ¨λ“  νŒ¨ν‚€μ§€ 선택
com..springbook..impl: com.springbook νŒ¨ν‚€μ§€λ‘œ μ‹œμž‘ν•˜λ©΄μ„œ λ§ˆμ§€λ§‰ νŒ¨ν‚€μ§€ 이름이 impl둜 λλ‚˜λŠ” νŒ¨ν‚€μ§€ 선택

profile
πŸ‘©β€πŸ’»βœ¨junior developer

0개의 λŒ“κΈ€