记录Spring第三天(AOP的相关概念,Spring中的 AOP)

AOP的相关概念:

什么是 AOP:
在这里插入图片描述
AOP 的作用及优势 :
在这里插入图片描述
AOP 的实现方式 :
在这里插入图片描述
引出:
我们进行增删改查,事务被自动控制了。换言之,我们使用了 connection 对象的 setAutoCommit(true) 此方式控制事务,如果我们每次都执行一条 sql 语句,没有问题,但是如果业务方法一次要执行多条 sql 语句,这种方式就无法实现功能了。例如,转账操作,当我们执行时,由于执行有异常,转账失败。但是因为我们是每次执行持久层方法都是独立事务,导致无法实
现事务控制(不符合事务的一致性)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
那么虽然可以解决,但是又引出了一个新的问题
在这里插入图片描述
动态代理的特点 :
在这里插入图片描述
动态代理常用的有两种方式 :

1.基于接口的动态代理 (实现略)
提供者:JDK 官方的 Proxy 类。
要求:被代理类最少实现一个接口。
2.基于子类的动态代理 (实现略)
提供者:第三方的 CGLib,如果报 asmxxxx 异常,需要导入 asm.jar。
要求:被代理类不能用 final 修饰的类(最终类)。

Spring中的 AOP:

AOP 相关术语 :

Joinpoint(连接点): 所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的是方法,因为 spring 只支持方法类型的 连接点。
Pointcut(切入点): 所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义。
Advice(通知/增强): 所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知。 通知的类型:前置通知,后置通知,异常通知,最终通知,环绕通知。 Introduction(引介): 引介是一种特殊的通知在不修改类代码的前提下, Introduction 可以在运行期为类动态地添加一些方 法或 Field。
Target(目标对象): 代理的目标对象。
Weaving(织入): 是指把增强应用到目标对象来创建新的代理对象的过程。 spring 采用动态代理织入,而 AspectJ 采用编译期织入和类装载期织入。
Proxy(代理: 一个类被 AOP 织入增强后,就产生一个结果代理类。 Aspect(切面): 是切入点和通知(引介)的结合。

关于代理的选择:
在 spring 中,框架会根据目标类是否实现了接口来决定采用哪种动态代理的方式。
基于 XML 的 AOP 配置:
账户的业务层实现类:
在这里插入图片描述
logger类:
在这里插入图片描述
xml的配置:
在这里插入图片描述
实现环绕通知及补充其余通知xml的配置:
在这里插入图片描述
logger类中环绕通知的书写:
在这里插入图片描述
基于注解的AOP配置:
xml文件:
在这里插入图片描述
业务层实现类:
在这里插入图片描述
logger类填写注解:
在这里插入图片描述
PS:在分别通知中,使用注解会使通知乱序,建议不要使用注解来注解分别通知。

相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页