🔀
AOP

AOP Basics

Aspect-Oriented Programming
💡 AOP ek CCTV SURVEILLANCE SYSTEM hai POORI OFFICE BUILDING mein — tumhe HAR ROOM mein ALAG SE camera install (code duplicate) nahi karna, EK CENTRAL SYSTEM saari rooms MONITOR karta hai. AOP isi tarah, LOGGING/SECURITY jaisi cheezein HAR method mein DUPLICATE karne ke bajaye, EK JAGAH SE handle karta hai.

AOP (Aspect-Oriented Programming) ek PROGRAMMING PARADIGM hai jo CROSS-CUTTING CONCERNS ko handle karta hai — wo functionality jo MULTIPLE, unrelated classes mein REPEAT hoti hai (logging, security, transaction management, caching). Bina AOP ke, ye code HAR jagah DUPLICATE karna padta.

Spring AOP, PROXIES ke through IMPLEMENT hota hai — Spring bean ke AROUND ek PROXY OBJECT banata hai. Client PROXY se interact karta hai, jo actual method call se PEHLE/BAAD extra logic (advice) EXECUTE karta hai. Ye pattern tumne PEHLE HI dekha hai — @Transactional, @Cacheable, security checks, sab INTERNALLY AOP proxies use karte hain.

// Bina AOP ke — logging HAR method mein duplicate:
public void placeOrder() {
    log.info("Entering placeOrder");
    // ... actual logic
    log.info("Exiting placeOrder");
}

// AOP ke saath — logging EK JAGAH define, SAB methods par apply:
@Aspect
@Component
public class LoggingAspect {
    @Before("execution(* com.example.service.*.*(..))")
    public void logBefore(JoinPoint jp) {
        log.info("Entering " + jp.getSignature());
    }
}
🔀
AOP ek CCTV SURVEILLANCE SYSTEM hai POORI OFFICE BUILDING mein — tumhe HAR ROOM mein ALAG SE camera install (code duplicate) nahi karna, EK CENTRAL SYSTEM saari rooms MONITOR karta hai. AOP isi tarah, LOGGING/SECURITY jaisi cheezein HAR method mein DUPLICATE karne ke bajaye, EK JAGAH SE handle karta hai.
1 / 6
⚡ Quick Recap
  • Cross-cutting concerns = logging, security, transactions (multiple classes mein repeat hote hain)
  • Proxy-based implementation — Spring bean ke AROUND ek proxy banata hai
  • @Transactional/@Cacheable — internally AOP proxies use karte hain
On this page (2 subtopics)

Cross-cutting concerns wo FUNCTIONALITY hain jo MULTIPLE, UNRELATED classes mein REPEAT hoti hain — logging, security checks, transaction management. AOP ke bina, HAR method mein ye code DUPLICATE karna padta (jaise HAR service method ke shuru mein "log.info(entering method)"). AOP is REPETITION ko EK JAGAH CENTRALIZE karta hai.

💡Tip: AOP ka goal SEPARATION OF CONCERNS hai — business logic (KYA karna hai) aur infrastructure concerns (logging, security) ko ALAG-ALAG rakhna, taaki business logic CLEAN aur FOCUSED rahe.

Spring AOP internally PROXIES banaता hai — jab bean ke around advice apply honi ho, Spring us bean ka EK PROXY object banata hai (JDK dynamic proxy agar interface hai, CGLIB proxy agar concrete class hai). Client PROXY se interact karta hai, jo REAL object ko call karne se PEHLE/BAAD extra logic execute karta hai.

  • JDK Dynamic Proxy = agar target class interface implement karti hai
  • CGLIB Proxy = agar target class koi interface implement NAHI karti
  • @Transactional, @Cacheable — sab isi proxy mechanism se kaam karte hain