π[Spring] AOPμ λν΄μβ¦
π AOPμ λν΄μβ¦
AOPλ?
- Aspect : κ΄μ (ν΅μ¬)
- νλ‘μ (Proxy) : μ€μ(ν΅μ¬)κΈ°λ₯μ λμ μν
- AOP : βλμ ν΅μ¬ κΈ°λ₯μ μννλ€β -> νλ‘μ ννλ‘!
AOP μ λ Έν μ΄μ
- @Aspect κ³΅ν΅ κΈ°λ₯μ μ μν ν΄λμ€
- @Pointcut : κ³΅ν΅ κΈ°λ₯μ μ μ© λ²μ
- @Around : κ³΅ν΅ κΈ°λ₯, ν΅μ¬ κΈ°λ₯μ λμ μνν΄μ£Όλ λ©μλ
- λ°νκ° : Object
- 맀κ°λ³μ : ProceedingJoinPoint joinPoint.proceed() //ν΅μ¬ λ©μλ λμ νΈμΆ
- @EnableAspectAutoProxy : μ€μ λΆλΆμ μλν μμΌμ£Όλ μ λ Έν μ΄μ
νλ‘μ μ€ν μμ μ€μ
- νλ‘μλ κΈ°λ³Έμ μΌλ‘ μΈν°νμ΄μ€λ₯Ό κΈ°λ°μΌλ‘ μ€νλ¨ (μΈν°νμ΄μ€λ₯Ό μμλ°μ)
- ProxyTargetClass -> true -> ν΄λμ€ κΈ°λ° νλ‘μ
μμ μ€μ λ°©λ²
- κΈ°λ³Έμ μΌλ‘λ Bean λ±λ‘λ μμλλ‘ μ€ν
- @Order(μμ) : νλ‘μκ° μνλλ μμ μ§μ
νμΌ μμΉ μ κ·Ό λ°©λ² (execution λͺ μμ)
- μ κ·Όμ νμ λ°νκ° ν¨ν€μ§λͺ .ν΄λμ€λͺ λ©μλ (β¦)
-
ex) public * aopex..
-
- : λͺ¨λ κ°
- aopex.* : aopex ν¨ν€μ§μ λ°λ‘ νμμ λͺ¨λ ν΄λμ€
-
aopex..* : aopex ν¨ν€μ§λ₯Ό ν¬ν¨νκ³ , κ·Έ νμμ λͺ¨λ ν¨ν€μ§μ ν΄λμ€
- () : 맀κ°λ³μκ° μλ λ©μλ
- (..) : 0κ° μ΄μμ 맀κ°λ³μ (맀κ°λ³μκ° μμ΄λ λκ³ , μμ΄λ λ¨ - λͺ¨λ λ©μλ)
- (*) : 1κ°μ 맀κ°λ³μ
- (,) : 2κ°μ 맀κ°λ³μ
- (Integer, ..) : 첫 λ²μ¨° 맀κ°λ³μμ νμ μ Integer
μμ
μ μ€ν°λ¦¬μ€ν¬
aopex.* : aopex λ°λ‘ νμ ν΄λμ€
..*
aopex..* : aopex ν¨ν€μ§λ₯Ό ν¬ν¨ν λͺ¨λ νμ ν¨ν€μ§μ ν΄λμ€
()
맀κ°λ³μ μμ
(..)
0κ° μ΄μμ 맀κ°λ³μ
(*)
1κ°μ 맀κ°λ³μ
(,)
2κ°μ 맀κ°λ³μ
(Long, ..)
첫 λ²μ§Έ λ°°κ°λ³μμ νμ
μ Long
λκΈλ¨κΈ°κΈ°