Spring深度学习(二)AOP

Spring深度学习(二)AOP

1.什么是AOP?

面向切面(方面)编程,是OOP(面向对象编程)的延续,
OOP:封装、继承、多态
在这里插入图片描述
AOP:

使用场景:针对每个方法的开始结束统一处理(性能监控,事务控制,权限校验,日志处理)
解决问题:横切逻辑代码(几乎每个方法都存在的位置,内容一致的代码),代码冗余,与业务代码混杂,

切:指的是横切逻辑,原有业务代码不能改变,只能操作横切逻辑代码
面:很多方法都存在,

常用术语
名词解释
joinpoint(切入点):它指的是那些可以用于把增强代码加入到业务主线中的点,那么由上图中我们可 以看出,这些点指的就是方法。在方法执行的前后通过动态代理技术加入增强的 代码。在Spring框架AOP思想的技术实现中,也只支持方法类型的连接点。
Pointcut(切 入点)它指的是那些已经把增强代码加入到业务主线进来之后的连接点。由上图中,我 们看出表现层 transfer 方法就只是连接点,因为判断访问权限的功能并没有对 其增强。
Advice(通 知/增强)它指的是切面类中用于提供增强功能的方法。并且不同的方法增强的时机是不一 样的。比如,开启事务肯定要在业务方法执行之前执行;提交事务要在业务方法 正常执行之后执行,而回滚事务要在业务方法执行产生异常之后执行等等。那么 这些就是通知的类型。其分类有:前置通知 后置通知 异常通知 最终通知 环绕通 知。
Target(目标 对象)它指的是代理的目标对象。即被代理对象。
Proxy(代理)它指的是一个类被AOP织入增强后,产生的代理类。即代理对象。
Weaving(织 入)它指的是把增强应用到目标对象来创建新的代理对象的过程。spring采用动态代 理织入,而AspectJ采用编译期织入和类装载期织入。
Aspect(切 面)它指定是增强的代码所关注的方面,把这些相关的增强代码定义到一个类中,这 个类就是切面类。例如,事务切面,它里面定义的方法就是和事务相关的,像开 启事务,提交事务,回滚事务等等,不会定义其他与事务无关的方法。我们前面 的案例中 TrasnactionManager 就是一个切面。

连接点:方法开始时、结束时、正常运行完毕时、方法异常时等这些特殊的时机点,我们称之为连接点,项目中每个方法都有连接点,连接点是一种候选点
切入点:指定AOP思想想要影响的具体方法是哪些,描述感兴趣的方法
Advice增强:
第一个层次:指的是横切逻辑
第二个层次:方位点(在某一些连接点上加入横切逻辑,那么这些连接点就叫做方位点,描述的是具体
的特殊时机)
Aspect切面:切面概念是对上述概念的一个综合
Aspect切面= 切入点+增强
= 切入点(锁定方法) + 方位点(锁定方法中的特殊时机)+ 横切逻辑

为了锁定要在哪个地方插入什么横切逻辑代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值