事务-接口与子类动态代理

线程关闭--还回池中

close() 连接关闭,也是还回连接池中 ,仍然绑着连接,但是不能用了  需要解绑 remove()

 

 事务 代表的 提交,sql执行成功 提交成功,说明肯定有事务,默认开启

 queryRunner 有带参 无参 --每条一个事务,还是所有在一个事务中?

单表一条语句的crud,不涉及复杂业务 用了带参传入数据源(即连接池)  不考虑多条事务问题 

多个dao使用同一个对象 会有问题 配多例

 

 

queryRunner对象 每次创建一个新的,并且在数据源中 拿连接 

每次sql执行,都用queryRunner.query()   queryRunner 多例都是新的

事务 控制 应该在业务层,而不是dao持久层 默认单条事务

 

 

 

 事务管理设置

 

 一个业务,几条sql 拿到的是 唯一的 连接 connection 

 

 

JDK 基于接口动态代理   

理解3个参数:

JVM运行时  要用类加载器创建代理对象,

生成相同的方法,class[] 接口保证

方法增强的代码。最后生成代理对象  

 

 

 

 

 

 

 

 

基于子类--  MethodIntercepter方法拦截

 

 

 所有业务方法 ---  连接点

被增强(事务)的方法 -- 切入点

动态代理 invoke 具有拦截作用 拦截被代理对象的所有执行方法

 

 

 

 

aop注解配置 有 顺序调用问题  最终通知 先跑,小心先释放   环绕通知没问题

 

 

自己 写的  事务管理器  (主要就是 提交 回滚),自己 配置 < aop:config> <aop:before。。。。

spring 也提供了事务管理器(主要就是 提交 回滚)   声明式事务控制--提倡注解版

 

 

 

哪些方法 需要通知

 

 

 编程式事务控制   有重复代码   匿名内部类 实现callback  

 

posted on 2022-07-30 12:04  daofree  阅读(18)  评论(0编辑  收藏  举报