SpringAOP 中转账案例问题
在学习JDK动态代理技术时遇见,编写事务管理类并设置完setAutoCommit(false) 后,本应该手动提交事务的,但是即使不调用commite 方法也会自动提交事务
TransactionManager .java
public void startTransaction(){
// 获取一个连接对象
// Connection threadConnection = connectionUtils.getThreadConnection();
try {
// 开启手动提交事务
connectionUtils.getThreadConnection().setAutoCommit(false);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
这里已经设置了自动提交为false,但最终调用该方法开启事务后,不调用提交事务的方法,发现数据库的值依旧会变化,然后去查数据库的事务提交时,发现自动提交的设置依旧是默认自动
JDKProxyFactory .java(代理类增强转账方法)
try {
// 开启手动提交事务
transactionManager.startTransaction();
// 目标对象方法执行
method.invoke(accountService, args);
// 没有提交事务欸,为什么能成功?!orn
} catch (Exception e) {
e.printStackTrace();
// 报错执行回滚方法
transactionManager.rollback();
} finally {
// 资源的释放
transactionManager.release();
}
然后就是数据库中表数据依旧发生了变化,报错回滚倒是没有问题,这样显得我很o_o
求各位帮忙解解惑!orn