.AOP概述.AOP是什么.2AOP的作用
在不修改目标对象的情况下添加新的业务逻辑(增强)
.3AOP的原理底层使用了动态代理技术实现的AOP切面编程思想
//代理方法publicvoidsing(Integermoney){if(money){//新增的业务逻辑(增强)targer.method(money);//调用目标方法}}.4为什么需要AOP
想象下面的场景,开发中在多个模块间有某段重复的代码,我们通常是怎么处理的?显然,没有人会靠“复制粘贴”吧。在传统的面向过程编程中,我们也会将这段代码,抽象成一个方法,然后在需要的地方分别调用这个方法,这样当这段代码需要修改时,我们只需要改变这个方法就可以了。然而需求总是变化的,有一天,新增了一个需求,需要再多出做修改,我们需要再抽象出一个方法,然后再在需要的地方分别调用这个方法,又或者我们不需要这个方法了,我们还是得删除掉每一处调用该方法的地方。实际上涉及到多个地方具有相同的修改的问题我们都可以通过AOP来解决。
.5AOP实现分类AOP要达到的效果是,保证开发者不修改源代码的前提下,去为系统中的业务组件添加某种通用功能。AOP的本质是由AOP框架修改业务组件的多个方法的源代码,看到这其实应该明白了,AOP其实就是前面一篇文章讲的代理模式的典型应用。按照AOP框架修改源代码的时机,可以将其分为两类:
静态AOP实现,AOP框架在编译阶段对程序源代码进行修改,生成了静态的AOP代理类(生成的*.class文件已经被改掉了,需要使用特定的编译器),比如AspectJ。
动态AOP实现,AOP框架在运行阶段对动态生成代理对象(在内存中以JDK动态代理,或CGlib动态地生成AOP代理类),如SpringAOP。
下面给出常用AOP实现比较
2.相关的术语JoinPoint:连接点是指那些被拦截到的点,在spring中,这些点指的是方法,因为spring只支持方法类型的连接点:业务中所有的方法都可以是连接点
所有的切入点都是连接点,
并不是所有的连接点都是切入点,
那些被增强的方法被称为切入点
通知:在beginTransaction执行的称为前置通知,