spring学习笔记2

AOP中的相关概念

Aspect(切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
Joint point(连接点):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
Pointcut(切点):表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
Advice(增强):Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
Target(目标对象):织入 Advice 的目标对象.。
Weaving(织入):将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程

spring静态代理和动态代理

jdk动态代理

需要有顶层接口才能使用,但是在只有顶层接口的时候也可以使用,常见是mybatis的mapper文件是代理。

使用反射完成。使用了动态生成字节码技术。

cglib动态代理 可以直接代理类,使用字节码技术,不能对 final类进行继承。使用了动态生成字节码技术。

spring事务的传播行为

①、PROPAGATION_REQUIRED :required , 必须。默认值,支持当前事务,如果没有事务。则创建一个新的事务。

②、PROPAGATION_SUPPORTS:supports ,支持当前事务,如果没有事务,则非事务运行。

③、PROPAGATION_MANDATORY:mandatory ,支持当前事务,如果没有事务则抛出异常。

④、PROPAGATION_REQUIRES_NEW :requires_new,如果当前有事务存在,挂起,创建一个新的事务。

⑤、PROPAGATION_NOT_SUPPORTED :not_supported ,非事务运行,如果当前有事务存在,挂起。

⑥、PROPAGATION_NEVER :never,非事务运行,如果当前有事务,则抛出异常。

⑦、PROPAGATION_NESTED :nested ,如果当前事务存在,嵌套一个事务。

spring事务的隔离级别

①、ISOLATION_DEFAULT:使用后端数据库默认的隔离级别

②、ISOLATION_READ_UNCOMMITTED:最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读

③、ISOLATION_READ_COMMITTED:允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生

④、ISOLATION_REPEATABLE_READ:对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生

⑤、ISOLATION_SERIALIZABLE:最高的隔离级别,完全服从ACID的隔离级别,确保阻止脏读、不可重复读以及幻读,也是最慢的事务隔离级别,因为它通常是通过完全锁定事务相关的数据库表来实现的

Spring切面可以应用五种类型的通知:

before:前置通知,在一个方法执行前被调用。

after: 在方法执行之后调用的通知,无论方法执行是否成功。

after-returning: 仅当方法成功完成后执行的通知。

after-throwing: 在方法抛出异常退出时执行的通知。

around: 在方法执行之前和之后调用的通知。

原文地址:https://www.cnblogs.com/liuyakun/p/11120564.html