What is AOP( Aspect Oriented Programming)? How it works with Spring ?

Aspect Oriented Programming (AOP)
Enables encapsulation of functionality that affects multiple classes in separate units
• Complements object oriented programming
• Most popular implementation for Java is AspectJ
  • Aspect oriented extension for Java
  • Based on Eclipse, available as plugin and stand-alone
AOP with Spring :
• The AOP framework is a key component of Spring
  • Provides declarative enterprise services (transactions)
  • Allows for custom aspects
• Aims at providing integration between AOP and IoC
• Integrates – but doesn’t compete – with AspectJ
• Provides two techniques for defining aspects:
  • @AspectJ annotation
  • XML schema-based