Aspect oriented programming (AOP) allows encapsulation of cross-cutting concerns in separate units called aspects. This modularizes functionality that spans multiple classes. Spring provides AOP support through @AspectJ annotations or XML configuration. Advice like before, after returning, and around intercept method invocations defined by pointcut expressions. This separates concerns and promotes loosely coupled and reusable code.