千家信息网

Spring Aop事务管理是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"Spring Aop事务管理是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring Aop事务管理是什么"吧!同一个类中A方法
千家信息网最后更新 2026年11月01日Spring Aop事务管理是什么

本篇内容主要讲解"Spring Aop事务管理是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring Aop事务管理是什么"吧!

  • 同一个类中A方法调用B方法时,如果在B方法上面设置事务,B方法的事务不会生效,因为A方法不是通过代理对象访问的,因此事务增强没有生效。但需要注意的是,如果A方法上配置了事务,A和B是一个事务管理器管理的,则B方法还是在A方法的事务上下文中执行。

/**
* 外层方法没有配置事务,验证调用同类方法时的场景:
* 1、方法B配置事务、执行数据库操作后抛出异常,数据不会回滚:因为方法内调用事务没生效
* 2、同上,通过代理对象访问,事务回滚
*/
public void pureA_tranB_throw() {
// 没有事务,事务正常提交
db1Op();

// 1、不会回滚,因为方法内调用事务没生效
//traB_throw();

// 2、通过代理对象,事务会回滚
C1Services c1Services = (C1Services) AopContext.currentProxy();
c1Services.traB_throw();

throw new RuntimeException("test rollback");
}

@Transactional(rollbackFor = RuntimeException.class, value = "db1transactionManager")
public void traB_throw() {
db1Op();
throw new RuntimeException("test rollback");
}

/**
* 外层方法配置事务,验证调用同类方法时的场景:
* 1、方法B配置事务、执行数据库操作后抛出异常,虽然B方法未启用事务的增强,但和外层事务属于同一个事务管理器,数据会回滚
*/
@Transactional(rollbackFor = RuntimeException.class, value = "db1transactionManager")
public void traA_traB_throw() {
// 有外层事务,事务会回滚
db1Op();

// 1、会回滚,因为虽然方法B的事务没失效,但是外层属于同一个事务管理器,因此外层事务会控制其回滚
traB_throw();

throw new RuntimeException("test rollback");
}

  • 同一个类中A方法调用B2方法,A和B2的事务管理器不一样,A方法上配置事务,B2上配置事务,B2执行异常。如果是A方法直接调用B2方法,B2不会回滚,同上因为事务增强没生效,但通过代理对象访问可以回滚。

/**
* 外层方法配置事务,验证不同数据库操作的场景:
* 1、不会回滚,B2方法的事务增强未生效,且B2和外层方法不是一个事务管理器,所以不会受外层事务影响
* 2、会回滚,B2方法的事务增强生效,执行异常,事务回滚
*/
@Transactional(rollbackFor = RuntimeException.class, value = "db1transactionManager")
public void traA_traB2_throw() {
// 有事务,事务会回滚
db1Op();

///1、不会回滚,事务增强没生效
//traB2_throw();

// 通过代理对象,事务会回滚
C1Services c1Services = (C1Services) AopContext.currentProxy();
c1Services.traB2_throw();

throw new RuntimeException("test rollback");
}

@Transactional(rollbackFor = RuntimeException.class, value = "db2transactionManager")
public void traB2_throw() {
db2();
throw new RuntimeException("test rollback");
}

  • 不同类中C1类的A方法调用C2类的B方法,通过类的实例对象调用B方法,如果B方法设置事务,因为是通过代理对象访问,因此事务增强会生效。

  • 事务的传播行为有:

REQUIRED 支持当前事务,如果当前事务不存在,则创建新事务。是spring事务管理的默认隔离级别
SUPPORTS 支持当前事务,如果当前事务不存在,则按照无事务运行
MANDATORY 支持当前事务,如果当前事务不存在,则抛出异常
REQUIRES_NEW 创建一个新事务,如果当前事务存在,则挂起当前事务
NOT_SUPPORTED 按照无事务运行,如果当前事务存在,则挂起当前事务
NEVER 按照无事务运行,如果当前事务存在,则抛出异常
NESTED 如果当前事务存在,则按照嵌套事务的方式执行,在特别的事务管理器上才会创建嵌套事务,一些JTA的提供者支持嵌套事务管理器

到此,相信大家对"Spring Aop事务管理是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

事务 方法 管理 事务管理 外层 配置 对象 代理 数据 支持 同类 场景 数据库 运行 验证 内容 学习 不同 实用 更深 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 高科技互联网 互联网是不是新科技 互联网科技开发公司 金融科技与互联网金融 上海致骋互联网科技 互联网科技咨询 卓越科技互联网 招聘 汉立互联网科技有限公司联系电话 银川新华互联网科技学校地址 团飞科技与伯堂互联网服务平台 互联网软件和科技 移动互联网年度科技创新 本届互联网博览会上的黑科技 滨湖区互联网智能科技产品有哪些 杭州披云加互联网科技有限公司 下一代互联网重大应用科技园 济南小医互联网科技有限公司招聘 互联网领先科技活动 众联互联网络科技 杭州科技互联网公司有哪些 南京欣网互联网络科技 互联网科技会 浩特互联网科技 互联网金融和金融科技 广西拼得多互联网科技有限公司 江苏南京365互联网科技 烟台灵鸽互联网科技有限公司 高科技互联网套路 银川新华互联网科技学校是国营吗 现代互联网科技公司
0