aop面向切面编程
- 解决一些系统层面上的问题,比如日志,事务,权限等待
- 不改变原有的逻辑的基础上,增加一些额外的功能
- 影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。与业务无关,共用业务模块却要共同调用的逻辑
核心关注点和横向关注点
- 核心关注点:业务处理的主要流程
- 横向关注点:与核心内容关系不大的点,如权限认证、日志、事物。
aop的相关概念
-
横向关注点:对特定方法进行拦截 拦截后的处理。
-
Aspect(切面):一个类,可加入切入点和通知。
-
JointPoint(连接点):明确的点,在spring中被拦截到的方法,字段或者构造器。
-
Advice(通知):AOP在切入点上的增强。
before(前置),after(后置),afterReturning(最终),afterThrowing(异常),around(环绕)
-
Pointcut(切入点):带有通知的连接点。
-
weave(织入):切面运用到目标对象导致代理对象创建的过程。
-
introduction(引入):在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段
-
AOP代理(AOP Proxy):AOP框架创建的对象,代理就是目标对象的加强。Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类
-
目标对象(Target Object): 包含连接点的对象。也被称作被通知或被代理对象。POJO