AOP概念
AOP就是面向方法编程也可以说是面向切面编程,可以在不影响源代码的基础上对方法进行增强。那什么又是面向方法编程呢,为什么又需要面向方法编程呢?来我们举个例子做一个说明:
比如,我们这里有一个项目,项目中开发了很多的业务功能。然而有一些业务功能执行效率比较 低,执行耗时较长,我们需要针对于这些业务方法进行优化。 那首先第一步就需要定位出执行耗 时比较长的业务方法,再针对于业务方法再来进行优化。 此时我们就需要统计当前这个项目当中每一个业务方法的执行耗时。那么统计每一个业务方法的执 行耗时该怎么实现? 可能多数人首先想到的就是在每一个业务方法运行之前,记录这个方法运行的开始时间。在这个方 法运行完毕之后,再来记录这个方法运行的结束时间。拿结束时间减去开始时间,不就是这个方法 的执行耗时吗?
以上分析的实现方式是可以解决需求问题的。但是对于一个项目来讲,里面会包含很多的业务模 块,每个业务模块又包含很多增删改查的方法,如果我们要在每一个模块下的业务方法中,添加记 录开始时间、结束时间、计算执行耗时的代码,就会让程序员的工作变得非常繁琐。 而如果我们基于 AOP 技术来实现,将会变得很简单。 在AOP中,我们可以把某一些方法共性的一 些功能统一进行抽取,定义在AOP程序中,程序运行时,动态的为原始业务方法进行增强 ,更加灵 活、高效、简洁 。 具体代码如下:
AOP涉及的其他核心概念
连接点
连接点指的是可以被aop控制的方法。
通知
指哪些重复的逻辑,也就是共性功能(最终体现为一个方法)
切入点
匹配连接点的条件,通知仅会在切入点方法执行时被应用
在通知当中,我们所定义的共性功能到底要应用在哪些方法上?此时就涉及到了切入点pointcut 概念。切入点指的是匹配连接点的条件。通知仅会在切入点方法运行时才会被应用。 在aop的开发当中,我们通常会通过一个切入点表达式来描述切入点
切面
描述通知与切入点的对应关系(通知+切入点)
目标对象
通知所应用的对象
需要特别理解的是连接点和切入点,可以简单理解为连接点包含切点,连接点是可被切的方法,切点就是真正切入的方法