🎭
AOP

Aspects & Advice

@Before, @After, @Around
💡 Advice types EK MOVIE mein DIFFERENT CAMERA ANGLES jaise hain — @Before scene SHURU hone se PEHLE ka shot hai, @After scene KHATAM hone ke BAAD ka, @Around POORA scene FILM karta hai (control mein rehta hai KYA include karna hai).

ASPECT ek CLASS hai (@Aspect + @Component) jo CROSS-CUTTING logic CONTAIN karta hai. Iske ANDAR ADVICE METHODS hote hain — HAR ek EK SPECIFIC TIMING par run hota hai. @Before (target method se PEHLE), @After (HAMESHA baad mein, success ho ya fail), @AfterReturning (sirf SUCCESS par), @AfterThrowing (sirf EXCEPTION par), @Around (SABSE POWERFUL — poori method call ko CONTROL kar sakta hai).

@Around advice SABSE FLEXIBLE hai — ProceedingJoinPoint.proceed() CALL karके actual method INVOKE hota hai, aur uske RESULT ko MODIFY, ya EXECUTION SKIP bhi kiya ja sakta hai (jaise caching — agar cache mein value hai, actual method CALL hi mat karo).

@Aspect
@Component
public class TimingAspect {
    @Around("execution(* com.example.service.*.*(..))")
    public Object logTime(ProceedingJoinPoint joinPoint) throws Throwable {
        long start = System.currentTimeMillis();
        Object result = joinPoint.proceed();        // actual method chalता hai
        long time = System.currentTimeMillis() - start;
        System.out.println(joinPoint.getSignature() + " took " + time + "ms");
        return result;
    }

    @AfterThrowing(pointcut = "execution(* com.example.service.*.*(..))", throwing = "ex")
    public void logException(Exception ex) {
        System.out.println("Exception occurred: " + ex.getMessage());
    }
}
🎭
Advice types EK MOVIE mein DIFFERENT CAMERA ANGLES jaise hain — @Before scene SHURU hone se PEHLE ka shot hai, @After scene KHATAM hone ke BAAD ka, @Around POORA scene FILM karta hai (control mein rehta hai KYA include karna hai).
1 / 2
⚡ Quick Recap
  • @Before/@After/@AfterReturning/@AfterThrowing/@Around = advice types
  • @Around SABSE POWERFUL — proceed() se method invoke, result modify kar sakta hai
  • @Aspect + @Component = ek aspect class
On this page (2 subtopics)

@Before advice target method se PEHLE run hota hai (logging entry). @After HAMESHA baad mein run hota hai (success ho ya exception). @AfterReturning sirf SUCCESSFUL completion par. @AfterThrowing sirf EXCEPTION par. @Around SABSE POWERFUL hai — method call ko POORI TARAH control kar sakta hai (execute karna hai ya nahi, result modify karna).

@Around("execution(* com.example.service.*.*(..))")
public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
    long start = System.currentTimeMillis();
    Object result = joinPoint.proceed();   // actual method call
    long duration = System.currentTimeMillis() - start;
    System.out.println(joinPoint.getSignature() + " took " + duration + "ms");
    return result;
}

Ek aspect ek NORMAL @Component class hai, @Aspect annotation ke saath — is class ke ANDAR MULTIPLE advice methods ho sakte hain, HAR ek DIFFERENT pointcut ke saath. @EnableAspectJAutoProxy (ya Spring Boot mein automatic) AOP ko ENABLE karta hai.

  • @Aspect + @Component = ek aspect class
  • Aspect ke andar MULTIPLE advice methods ho sakte hain
  • Spring Boot mein AOP automatically enabled hota hai (starter-aop se)