@Transactional 可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。虽然 @Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。另外, @Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。如果你在 protected、private 或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。
默认情况下,只有来自外部的方法调用才会被AOP代理捕获,也就是,类内部方法调用本类内部的其他方法并不会引起事务行为,即使被调用方法使用@Transactional注解进行修饰。

个人总结:@Transactional就是将整个方法里面的逻辑全部纳入事务内,除非调用了外部接口也有开启事务的方法,不然作为在同一个事务里面。

下面将以具体的事例来佐证:

        @Override@Transactionalpublic void test1() {eventLogService.addEventLog("1", "1", "1");test2();test4();test5();test();}@Override@Transactional(propagation=Propagation.REQUIRES_NEW, rollbackFor = Exception.class)public void test2() {eventLogService.addEventLog("3", "3", "3");}@Overridepublic void test5() {eventLogService.addEventLog("3", "3", "3");}private void test() {eventLogService.addEventLog("2", "2", "2");throw new CouponException("2000", "xiaoxiao");}public void test4() {eventLogService.addEventLog("4", "4", "4");}     public void addEventLog(String a1, String a2, String a3) {insert();}

运行结果显示,test()函数发生了异常,其他函数实际未在数据库中添加数据,从而可以证实上述黑体字的结论,如果有什么纰漏,望请指正

@Transactional注解个人总结相关推荐

  1. @Transactional注解最容易忽视的三个失效场景!

    @Transactional注解在以下场景中使用,是会失效的,切记! 1.非public方法 spring对注解事务的方法进行校验,修饰符是不是public,不是 public则不会获取@Transa ...

  2. @aspect注解类不生效_springboot:@Transactional注解 VS @Service注解

    1. Transactional注解与Service/Component注解冲突? 之前遇到一个神奇的事情--用Transactional注解的方法,数据处理了一半,后面的数据处理抛出异常后,没有回滚 ...

  3. 一口气说出 6 种 @Transactional 注解的失效场景

    一.事务 事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种. 编程式事务:是指在代码中手动的管理事务的提交.回滚等操作,代码侵入性比较强, ...

  4. spring@Transactional注解事务不回滚不起作用无效的问题处理

    这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚.后来终于找到了原因. 如果你也出现了这种情况,可以从下面开始排查. 一.特性 先来了解一下@Transactio ...

  5. @Transactional注解在什么情况下失效?

    引言 1.@Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功.要么同时失败. 2.使用@Transactional注解时需要注意许 ...

  6. 为什么加了@Transactional注解,事务没有回滚?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 在前天的<事务管理入门>一文发布之后,有读者 ...

  7. java事务不生效场景_springboot中使用@Transactional注解事物不生效的坑

    一:在springboot中使用事物遇到的坑 1.我们知道spring中的事物分为两种:一种是编程式事物,一种是声明式事物.顾名思义,编程式事物是指通过代码去实现事物管理,这里不做过多说明.另一种是声 ...

  8. spring的@Transactional注解详细用法

    概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性. Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型 ...

  9. @getmapping注解的作用_一口气说出6种,@Transactional注解的失效场景

    作者:程序员内点事 引言 昨天公众号粉丝咨询了一个问题,说自己之前面试被问@Transactional注解哪些场景下会失效,一时语塞致使面试失败.所以今天简单的和大家分享一下@Transactiona ...

  10. spring事物配置,声明式事务管理和基于@Transactional注解的使用

    事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或 ...

最新文章

  1. android md日期选择器,移动端日期选择
  2. ES6中定义的类和对象
  3. 读取SD卡里面的BMP文件 显示到TFT上
  4. 一个sqlserver数据库表查看与备份软件
  5. Domain Driven Design and Development In Practice--转载
  6. 交际中你所不知道的说话的12个技巧!
  7. 如何在Instagram上过滤冒犯性评论
  8. 新的编程语言研发契机思考
  9. python 字典查询比列表快_Python 字典和列表的对比应用
  10. Postman脚本发送请求pm.sendRequest
  11. CentOS 7 使用源代码编译并安装软件
  12. sql如何避免插入并发_SQL批量插入并发和性能注意事项
  13. 200 万年薪的博士,华为到底看重什么?
  14. 微分方程的数值解法与程序实现 pdf_数值计算方法·第三部分
  15. Neo4j下载和安装
  16. 如何旋转PDF页面并保存
  17. 控制反转和依赖注入的理解(通俗易懂)
  18. 分享一个编程学习网站——并发编程网
  19. 商业智能BI财务分析,如何从财务指标定位到业务问题
  20. 毫米和像素怎么换算_C#中毫米与像素的换算方法

热门文章

  1. Gitlab跨仓库跨分支搜索工具
  2. oppor11点击Android,OPPOR11有什么隐藏功能 OPPOR11可以分屏操作吗?
  3. 课堂上最搞笑的问题答案
  4. js promise resolve()的用法
  5. 名字空间的妙处~~~
  6. 『Scrapy』登录人人贷并抓取借贷人信息中遇到的坑
  7. CPython GIL介绍 和 实现 及 GIL影响
  8. TCL电子在柏林IFA展发布智能电视和智能AV新品
  9. Latex中输入角度的度°
  10. Mac下很赞的PDF阅读器 – Skim