π μ€λμ νμ΅ ν€μλ
- Spring AOP
π₯ Spring AOP
Spring AOP (Aspect-Oriented Programming)λ κ΄μ μ§ν₯ νλ‘κ·Έλλ°μ ν ννλ‘,
μ ν리μΌμ΄μ μ μ¬λ¬ λͺ¨λμμ λ°λ³΅μ μΌλ‘ λ°μνλ κ΄μ¬μ¬λ₯Ό λΆλ¦¬νμ¬ λͺ¨λννλ κΈ°μ μ λλ€.
μ΄λ₯Ό ν΅ν΄ ν΅μ¬ λΉμ¦λμ€ λ‘μ§κ³Ό κ° κ΄μ¬μ¬λ₯Ό λΆλ¦¬νμ¬ μ½λμ μ¬μ¬μ©μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν΅λλ€.
Spring AOPμ μ£Όμ κ΅¬μ± μμμ κ°λ μ μλμ κ°μ΅λλ€.
- Aspect (κ΄μ ) : κ΄μ μ νΉμ ν κ΄μ¬μ¬λ₯Ό λνλ΄λ λͺ¨λμ λλ€. μλ₯Ό λ€μ΄, λ‘κΉ , νΈλμμ κ΄λ¦¬, 보μ λ±μ΄ κ΄μ μ μμμ λλ€.
- Join Point (κ²°ν© μ§μ ) : κ²°ν© μ§μ μ μ ν리μΌμ΄μ
μ€ν μ€μ Aspectκ° μ μ©λ μ μλ μ§μ μ λ§ν©λλ€.
λ©μλ νΈμΆ, μμΈ λ°μ λ±μ΄ κ²°ν© μ§μ μ μμμ λλ€. - Advice (μ‘°μΈ) : Adviceλ Aspectμμ κ²°ν© μ§μ μ μ½μ
λμ΄ μ€νλλ μ½λμ
λλ€.
Spring AOPμμλ λ€μκ³Ό κ°μ Adviceλ₯Ό μ§μν©λλ€.
- Before Advice : κ²°ν© μ§μ μ΄μ μ μ€νλλ μ½λ.
- After Returning Advice : κ²°ν© μ§μ μμ λ©μλκ° μ μμ μΌλ‘ λ°νλ νμ μ€νλλ μ½λ.
- After Throwing Advice : κ²°ν© μ§μ μμ μμΈκ° λ°μν νμ μ€νλλ μ½λ.
- After Advice : κ²°ν© μ§μ μμ λ©μλκ° λ°νλκ±°λ μμΈκ° λ°μν νμ μ€νλλ μ½λ.
- Around Advice : κ²°ν© μ§μ μ κ°μΈμ λ©μλ νΈμΆ μ νμ μ€νλλ μ½λ. - Pointcut (κ²°ν©μ ) : κ²°ν©μ μ Aspectκ° Adviceλ₯Ό μ μ©ν κ²°ν© μ§μ μ μ μνλ κ²μ
λλ€.
μ κ·ννμμ΄λ νΉμ λ©μλ ν¨ν΄μ μ¬μ©νμ¬ κ²°ν© μ§μ μ μ§μ ν μ μμ΅λλ€. - Introduction (λμ
) : λμ
μ κΈ°μ‘΄ ν΄λμ€μ μλ‘μ΄ λ©μλλ νλλ₯Ό μΆκ°νλ κ²μ μλ―Έν©λλ€.
Spring AOPμμλ μΈν°νμ΄μ€λ₯Ό μ΄μ©νμ¬ ν΄λμ€μ λμ μ μνν μ μμ΅λλ€.
Spring AOPλ νλ‘μ κΈ°λ°μ AOPλ₯Ό μ¬μ©νμ¬ κ΅¬νλμ΄ μμ΅λλ€.
μ¦, Aspectλ₯Ό μ μ©ν λΉμ Springμ΄ ν΄λΉ λΉμ νλ‘μλ₯Ό μμ±νμ¬ Adviceλ₯Ό μ μ©ν©λλ€.
μ΄λ‘μ¨ ν΅μ¬ λΉμ¦λμ€ λ‘μ§κ³Ό κ΄μ μ½λλ₯Ό λΆλ¦¬νκ³ , μ½λ μ€λ³΅μ νΌνλ©°, μ μ§λ³΄μμ±μ ν₯μμν¬ μ μμ΅λλ€.
βοΈ Sping AOPλ₯Ό μ¬μ©ν λ μ£Όμμ
- Proxy κΈ°λ° : Spring AOPλ νλ‘μ κΈ°λ°μ AOPλ₯Ό μ¬μ©νλ―λ‘, AOPκ° μ μ©λλ λμμ μΈν°νμ΄μ€λ₯Ό
ꡬνν λΉμλ§ μ μ©λ©λλ€. λ°λΌμ ν΄λμ€ λ΄λΆμμ λ©μλλ₯Ό νΈμΆν λλ AOPκ° μ μ©λμ§ μμ μ μμ΅λλ€. - μ±λ₯ μ€λ²ν€λ : AOPλ μ½λ μ€ν μ€κ°μ κ΄μ¬μ¬λ₯Ό μ½μ
νκΈ° λλ¬Έμ μ±λ₯ μ€λ²ν€λκ° λ°μν μ μμ΅λλ€.
νΉν Around Adviceλ₯Ό μ¬μ©ν λ, λ©μλ νΈμΆ μ νμ μΆκ° μμ μ μννλ―λ‘ μ±λ₯μ μν₯μ μ€ μ μμ΅λλ€. - μμμ μ£Όμ : μ¬λ¬ κ°μ Adviceκ° νλμ Join Pointμ μ μ©λ κ²½μ°, Adviceμ μμκ° μ€μν©λλ€.
Before Adviceκ° λ¨Όμ μ€νλκ³ , After Adviceκ° λμ€μ μ€νλ©λλ€.
π₯ Spring AOPμ λμ
- κ°λ μ μ΄ν΄
- μ€νλ§ μ€μ λμ
π μ€λμ νκ³
Spring AOP μλ‘μ΄ λ μμ λ°°μ λλ°, μ΄λ‘ μ μμ§λ§ νμ©μ ν μ μμμ§.. μ΄μ¬ν ν΄λ³΄κ² μ΅λλ€.
'TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
03/15(κΈ) λ΄μΌλ°°μμΊ ν Java 57μΌμ°¨ TIL - StringBuilder (0) | 2024.03.15 |
---|---|
03/14(λͺ©) λ΄μΌλ°°μμΊ ν Java 56μΌμ°¨ TIL - AWS (0) | 2024.03.14 |
03/12(ν) λ΄μΌλ°°μμΊ ν Java 54μΌμ°¨ TIL - QueryDSL (0) | 2024.03.12 |
03/11(μ) λ΄μΌλ°°μμΊ ν Java 53μΌμ°¨ TIL - SOLID (0) | 2024.03.12 |
03/08(κΈ) λ΄μΌλ°°μμΊ ν Java 52μΌμ°¨ TIL - @OneToOne (0) | 2024.03.08 |