AOP stands for aspect-oriented programming. AOP allows you to address cross-cutting concerns, such as logging, transaction management, security, and caching, without repeating the same code over and over. It allows you to apply the DRY (Do not Repeat Yourself) principle.
Spring uses AOP itself in many ways, but also directly exposes the tooling to developers.
In short, you use Spring AOP by defining a pointcut (where to add additional features) and advice (the feature you are adding).
Spring creates two types of proxies, either JDK1 (when implementing an interface, this is built-in to the JDK) or