AOP
AOP(aspect Oriented Programming) 是一种设计思想,是软件设计领域中的面向切面编程,
他是面向对象的一种补充和完善,它通过预编译,和运行期动态代理方式实现在不同的。<br>
面向切面编程
面向切面编程是对面向对象编程(OOP)的一个完善和补充,AOP横向抽取.OOP纵向继承<br>
横切关注点
从每个方法中抽取出来的同一类非核心业务:例如日志功能.
那么一个方法可以抽取多个横切关注点<br>
切面
封装通知方法的类叫切面.
通知
每一个横切关注点上要做的事情都需要写一个方法来实现,
这样的方法叫**通知方法**。即非核心业务封装的方法.!!!说白了就是封装非核心业务代码的方法<br>
1. 前置通知:在被代理的目标方法前执行。(目标方法业务之前需要执行的代码)
2. 返回通知:在被代理的目标方法成功结束后执行。即核心业务方法执行完后的横切关注点<br>
3. 异常通知:在被代理的目标方法出现异常结束后执行,即业务出现异常后执行的横切关注点。<br>
4. 后置通知: 在被代理的目标方法最终结束后执行,即finally中执行的横切关注点。
5. 环绕通知:相当于上面四种通知<br><br>
目标
即被代理的目标对象。就是要抽取非核心业务代码的对象。<br>
代理模式:属于结构型模式,,作用:提供了一个代理类来增强目标对象。将核心功能抽取出来,和非核心业务分离。
代理
向目标对象应用通知方法之后创建的代理对象。不需要自己创建代理对象,工厂会生成代理<br>
连接点
但是切入点是一个纯逻辑概念,并无代码实现
就是抽取横切关注点的位置,即横切关注点是从哪里抽取出来的,可以理解为坐标。<br>
切入点
每个类的方法都包括多个连接点, 切入点是一个表达式,是一个代码实现的一个概念。
是对横向关注点抽出来到代理对象的一个落地实现。<br>