AOP:面向切面编程,一种思想,框架有Spring AspectJ JBoss
AOP是对OOP的一种扩展,OOP可以很好处理的业务流程,但是不能不能把某些特定的重复行为封装到模块中。
例如:很多业务中都需要记录日志,结果我们不得不在业务流程中大量嵌入日志记录代码,无论是对业务代码还是对日志记录代码来说,维护都是非常复杂的。由于系统中嵌入了这种大量的与业务无关的其他重复代码,系统的复杂性大大增加了。AOP可以很好的解决这些问题,AOP可以关注系统的截面,在适当的时候拦截程序的执行流程,把程序的预处理和后处理交给某个拦截器完成。例如,访问数据库时需要记录日志,使用AOP思想,那么在处理业务流程时,不必考虑记录日志记录,而是把它交给一个专门的日志记录模块。
从而实现业务代码和日志记录代码分离,在AOP中,这称为关注点分离。
AOP常见应用:日志拦截,授权认证,数据库的事物拦截和数据审计。