μ€λμ Springμ ν΅μ¬ κΈ°λ₯μ€ νλμΈ AOP (Aspect Oriented Programming)μ λν΄μ μμ보μ.
AOP
μ¬μ μ μλ―ΈμΈ AOPλ ν‘λ¨ κ΄μ¬μ¬μ λΆλ¦¬λ₯Ό νμ©ν¨μΌλ‘ λͺ¨λμ±μ μ¦κ°μν€λ κ²μ΄ λͺ©μ μΈ νλ‘κ·Έλλ°μ ν¨λ¬λ€μμ΄λ€.
μ’ λ¨ κ΄μ¬μ¬λ?
νλμ λΉμ¦λμ€ λ‘μ§μ΄ μννκΈ° μν΄ νμν λ‘μ§μ΄ μ’
λ¨μ κ°λ
μΌλ‘ μ‘΄μ¬νλ κ²μ λ»νλ€.
μλ₯Ό λ€μ΄ νμκ°μ
μ μν΄ νμν λ‘μ§λ€μ΄ νμκ°μ
μ μννκΈ° μν κ΄μ¬μ¬λΌκ³ ν μ μλ°.
νμ§λ§ μ¬κΈ°μ κ°λ°μλ€μ΄ κ°μ₯ μ«μ΄νλ μ€λ³΅μ΄ λ°μν νλ₯ μ΄ λμμ§λ€.
μ°λ¦¬κ° DB Connectionμ κ΄ν΄μ CRUDλ₯Ό μννκΈ° μν΄μ λͺ¨λ λ©μλμ Connection c
μ μ½λκ° κ³μ μ€λ³΅λλ νμμ΄ λ°μνλ€.
ν‘λ¨ κ΄μ¬μ¬λ?
νμ§λ§ ν‘λ¨ κ΄μ¬μ¬λ μ¬λ¬ λΉμ¦λμ€ λ‘μ§μ΄ μνλ λ μλ‘ μ€λ³΅λλ λ‘μ§μ΄ μ‘΄μ¬νλμ§μ λν κ΄μ¬μ¬μ΄λ€.
μμμ λ§ νλ―μ΄ DB Connectionμ κ΄ν΄ CRUDλ₯Ό μννκΈ° μν΄μ λͺ¨λ λ©μλμ μ‘΄μ¬νλ Connection
κ΄λ ¨ λ‘μ§μ νλμ getConnection()
λ©μλλ‘ λ§λ€μ΄μ νΈμΆνλ ννλ‘ κ΄μ¬μ¬λ₯Ό λΆλ¦¬μν¬ μ μλ€.
κ·Έλμ κ²°λ‘ μ AOPλ ν‘λ¨ κ΄μ¬μ¬λ₯Ό λͺ¨λλ‘μ¨ μ¬μ©ν μ μκ² νλ κ°λ μΈ κ²μ΄λ€.
AOPμλ κΈ°λ₯μ λ κ°μ§λ‘ λλ μ μκ°νλλ°,
- ν΅μ¬ κΈ°λ₯ => ν΅μ¬ κΈ°λ₯μ λΉμ¦λμ€ λ‘μ§μ ν¬ν¨νλ κΈ°λ₯μ λ»νλ€.
- λΆκ° κΈ°λ₯ => λΆκ°κΈ°λ₯μ ν΅μ¬ κΈ°λ₯μ λμμ£Όλ λΆκ°μ μΈ κΈ°λ₯μ λ»νλ€. (λ‘κΉ , 보μ)
μ΄μ AOPμ μ μλ₯Ό μ‘°κΈ λ 보μνμλ©΄, μ ν리μΌμ΄μ μμμ κ΄μ¬μ¬μ λΆλ¦¬κ° μ΄λ£¨μ΄μ Έ λΆκ° κΈ°λ₯μ AspectλΌλ λͺ¨λ ννλ‘ λ§λ€μ΄μ μ€κ³νκ³ κ°λ°νλ λ°©λ²μ λ»νλ€.
μ°λ¦¬κ° AOPλ₯Ό μ΄ν΄νκΈ° μν΄μ λ€μν μ©μ΄μ λν΄μ λ¨Όμ μΆ©λΆν νμ΅νκ³ μ§νλμ΄μΌ ν κ² κ°λ€.
AOPμ μ©μ΄
AOPμλ λ§μ μ©μ΄λ€μ΄ μ‘΄μ¬νλ€.
- ν΅μ¬ κΈ°λ₯
- λΆκ° κΈ°λ₯
- target
- advice
- join point
- point cut
- aspect
- advisor
- weaving
μ©μ΄λ₯Ό νλμ© μμλ³΄κ³ κ·Έλ¦Όμ ν΅ν΄ νλμ νλ¦μ μ½μ΄λ³΄μ.
Target
ν΅μ¬κΈ°λ₯μ λ΄κ³ μλ λͺ¨λλ‘, λΆκ°κΈ°λ₯μ λΆμ¬ν λμμ΄ λλ€.
Advice
νκ²μ μ 곡ν λΆκ°κΈ°λ₯μ λ΄κ³ μλ λͺ¨λ
Join Point
Adviceκ° μ μ©λ μ μλ μμΉ
νκ² κ°μ²΄κ° ꡬνν μΈν°νμ΄μ€μ λͺ¨λ λ©μλλ Join Pointκ° λ μ μμ
PointCut
μ΄λλ°μ΄μ€λ₯Ό μ μ©ν νκ²μ λ©μλλ₯Ό μ λ³νλ μ κ·ννμ
ννμμ execution
μΌλ‘ μμνκ³ , λ©μλμ Signatureλ₯Ό λΉκ΅νλ λ°©μ
Aspect
AOPμ κΈ°λ³Έ λͺ¨λ
μ±κΈν€ ννμ κ°μ²΄λ‘ μ‘΄μ¬
Advisor
μ΄λλ°μ΄μ€ + ν¬μΈνΈμ»·
Spring AOPμμλ§ μ¬μ©νλ νΉλ³ν μ©μ΄
Weaving
ν¬μΈνΈ μ»·μ μν΄μ κ²°μ λ νκ²μ μ‘°μΈ ν¬μΈνΈμ λΆκ°κΈ°λ₯(μ΄λλ°μ΄μ€)λ₯Ό μ½μ
νλ κ³Όμ
AOPκ° ν΅μ¬κΈ°λ₯(νκ²)μ μν₯μ μ£Όμ§ μμΌλ©΄μ νμν μ΄λλ°μ΄μ€λ₯Ό μΆκ°ν μ μλλ‘ νλ ν΅μ¬μ μΈ μ²λ¦¬ κ³Όμ
μμ μ€..
λκΈ