[Spring] AOP(03) - Advice Type
in Tech-Stack on Spring
Advice Type
aopμ μ¬μ©λλ adviceμ μ’ λ₯μ μ€λͺ μ λν ν¬μ€νΈμ΄λ€.
| Advice | μ€μ |
|---|---|
@Before | target λ©μλκ° μ€νλκΈ° μ μ μ€νλλ€. |
@After | target λ©μλκ° μ€νλ νμ μ€νλλ€. |
@AfterReturning | target λ©μλκ° μ μμ μΌλ‘ μ’ λ£λμμ λ μ€νλλ€. |
@AfterThrowing | - target λ©μλμμ throwing(μλ¬)μ΄ λ°μνμ λ μ€νλλ€. - μλ¬κ° λ°μνλ μ¦μ μ€νλλ€. |
@Around | - λ©μλλ₯Ό κ°μΈλ νμλ‘ μ€ν μ, λ€ λͺ¨λ μν₯μ λ―ΈμΉ μ μλ€. - Advice μ€ κ°μ₯ κ°λ ₯νλ€. |
- advice μ€ν μμ
- Before -> AfterThrowing -> AfterReturning -> After
@Around
around μ΄λλ°μ΄μ€ λ©μλμ ꡬ쑰λ λ€μκ³Ό κ°μ΄ ꡬμ±λλ€.
(1) Before μ€ν λΆλΆ
try {
(2) target λ©μλ μ€ν λΆλΆ
(3) AfterReturning μ€ν λΆλΆ
} catch () {
(4) AfterThrowing μ€ν λΆλΆ
}
(5) After μ€ν λΆλΆ
Around μ΄λλ°μ΄μ€λ₯Ό μ¬μ©ν κ²½μ°μ JoinPointλμ proceed()κ° μ‘΄μ¬νλ ProceedingJoinPointμ μ¬μ©νλ€.
target λ©μλ λΆλΆμμ ν΄λΉ λ©μλλ₯Ό μ€νν κ²½μ°μ λ€μκ³Ό κ°μ΄ μμ±νλ©΄ λλ€.
@Around
public void aroundAdvice(ProceedingJoinPoint pjp) {
// before λΆλΆ
try {
// target λ©μλ μ€ν
pjp.proceed(pjp.getArgs());
}
}
aspectλ₯Ό μ€νν λ λ§€κ°λ³μλ₯Ό μ²λ¦¬νκ±°λ μμ ν μ΄μ κ° μλ€λ©΄ joinpointλ₯Ό λ§€κ°λ³μλ‘ λ£μ§ μμλ λλ€.
// λμ κ°μ μν μ νλ€.
pjp.proceed(pjp.getArgs());
pjp.proceed();
