AOP:
在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
横向重复,纵向提取
AOP定义(面试题):
通过预编译方式和运行时动态代理实现程序功能的统一维护的一种技术。
横向重复,纵向提取,在OOP基础上进行横向开发
AOP关注内容各层和各个方法之间的共性内容
将共性内容提取出来,单独开发,实现共性(事务、日志...)与特性(业务代码)分离
好处:
实现了代码复用,方便维护
高内聚,低耦合
实现了解耦(共性与特性)
实现模块开发
专业术语:
连接点(join point)
SpringAOP中,被增强方法的执行点
切点(point cut)
SpringAOP中,被增强方法/目标方法
增强(Advice)/通知
增强的代码
织入(weaving)
将通知织入到目标方法的过程
目标对象
代理对象
切面(Aspect)
切面=通知+切点
将通知织入到切点形成切面