- 浏览: 782417 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (360)
- Java (101)
- JPA/Hibernate (10)
- Spring (14)
- Flex/BlazeDS (37)
- Database (30)
- Lucene/Solr/Nutch (0)
- Maven/Ant (25)
- CXF/WebService (3)
- RPC/RMI/SOAP/WSDL (1)
- REST (6)
- TDD/BDD/JUnit (1)
- Servlet/JSP (2)
- AI/MachineLearning (3)
- Resource (1)
- 字符编码 (2)
- OOA/OOPS/UML (5)
- DesignPattern (8)
- 算法与数据结构 (11)
- Web&App Server (13)
- 并发&异步&无阻塞 (7)
- Entertainment (4)
- JavaScript/ExtJS (45)
- CodeStyle&Quality (1)
- svn/git/perforce (8)
- JSON (2)
- JavaScriptTesting (4)
- Others (6)
- RegularExpression (2)
- Linux/Windows (12)
- Protocal (2)
- Celebrities (1)
- Interview (1)
- 计算机语言 (1)
- English (2)
- Eclipse (5)
- TimeZone/时区 (1)
- Finance (1)
- 信息安全 (1)
- JMS/MQ (2)
- XSD/XML/DTD (3)
- Android (4)
- 投资 (3)
- Distribution (3)
- Excel (1)
最新评论
-
qdujunjie:
如果把m换成具体的数字,比如4或者5,会让读者更明白
m阶B树中“阶”的含义 -
java-admin:
不错,加油,多写点文章
关于Extjs的mixins和plugin -
xiehuaidong880827:
你好,我用sencha cmd打包完本地工程后,把app.js ...
ExtJS使用Sencha Cmd合并javascript文件为一个文件 -
KIWIFLY:
lwpan 写道inverse = "true&qu ...
Hibernate中什么时候使用inverse=true -
luedipiaofeng:
good
消除IE stop running this script弹出框
“In proxy mode (which is the default), only external method calls coming in through the proxy are intercepted. This means that self-invocation, in effect, a method within the target object calling another method of the target object, will not lead to an actual transaction at runtime even if the invoked method is marked with @Transactional.
在默认的代理模式下,只有目标方法由外部调用,才能被 Spring 的事务拦截器拦截。在同一个类中的两个方法直接调用,是不会被 Spring 的事务拦截器拦截,就像上面的 save 方法直接调用了同一个类中的 method1方法,method1 方法不会被 Spring 的事务拦截器拦截。可以使用 AspectJ 取代 Spring AOP 代理来解决这个问题,但是这里暂不讨论。”
以上内容来自链接:
Spring Boot 中使用 @Transactional 注解配置事务管理
https://blog.csdn.net/nextyu/article/details/78669997
以上内容肉测发现确实是这个问题,刚开始事物方法定义为私有的,当然不行,后面以为是抛出的异常不是RuntimeException,但是事实上Spring已经封装了一层,所以其实所有的异常经过Spring重新抛出后就已经是RuntimeExeption的了,最后才发现是因为同一个类的方法A调用事物方法B的问题,将事物方法B放到单独的类,然后方法A再调用方法B,事物生效。
另外需要明确几点:
默认配置下 Spring 只会回滚运行时、未检查异常(继承自 RuntimeException 的异常)或者 Error。参考这里
@Transactional 注解只能应用到 public 方法才有效。
对于自调用获同一个类中调用的解决方案:
1)放到单独的类中变成外部调用
2)获取对应的代理类,调代理类上的同名方法
a)配置
@EnableAspectJAutoProxy(exposeProxy=true)
public class Bootstrap {
}
b)调用方式
int[] effectedRows = ((SkuBasicCreationServiceImpl)AopContext.currentProxy()).createSkuWithTransaction(skuCreationDO, skuBarCodeDOs, skuMUnitDOs, skuTaxClsDO);
事务注解Transactional在同一个类中调用的失效问题
[url]https://blog.csdn.net/ligeforrent/article/details/79996797[/url]
spring @transactional public和自调用方法的问题处理
https://blog.csdn.net/zy_281870667/article/details/77164312
springboot的注解@EnableAspectJAutoProxy讲解
https://blog.csdn.net/pml18710973036/article/details/61654277
在默认的代理模式下,只有目标方法由外部调用,才能被 Spring 的事务拦截器拦截。在同一个类中的两个方法直接调用,是不会被 Spring 的事务拦截器拦截,就像上面的 save 方法直接调用了同一个类中的 method1方法,method1 方法不会被 Spring 的事务拦截器拦截。可以使用 AspectJ 取代 Spring AOP 代理来解决这个问题,但是这里暂不讨论。”
以上内容来自链接:
Spring Boot 中使用 @Transactional 注解配置事务管理
https://blog.csdn.net/nextyu/article/details/78669997
以上内容肉测发现确实是这个问题,刚开始事物方法定义为私有的,当然不行,后面以为是抛出的异常不是RuntimeException,但是事实上Spring已经封装了一层,所以其实所有的异常经过Spring重新抛出后就已经是RuntimeExeption的了,最后才发现是因为同一个类的方法A调用事物方法B的问题,将事物方法B放到单独的类,然后方法A再调用方法B,事物生效。
另外需要明确几点:
默认配置下 Spring 只会回滚运行时、未检查异常(继承自 RuntimeException 的异常)或者 Error。参考这里
@Transactional 注解只能应用到 public 方法才有效。
对于自调用获同一个类中调用的解决方案:
1)放到单独的类中变成外部调用
2)获取对应的代理类,调代理类上的同名方法
a)配置
@EnableAspectJAutoProxy(exposeProxy=true)
public class Bootstrap {
}
b)调用方式
int[] effectedRows = ((SkuBasicCreationServiceImpl)AopContext.currentProxy()).createSkuWithTransaction(skuCreationDO, skuBarCodeDOs, skuMUnitDOs, skuTaxClsDO);
事务注解Transactional在同一个类中调用的失效问题
[url]https://blog.csdn.net/ligeforrent/article/details/79996797[/url]
spring @transactional public和自调用方法的问题处理
https://blog.csdn.net/zy_281870667/article/details/77164312
springboot的注解@EnableAspectJAutoProxy讲解
https://blog.csdn.net/pml18710973036/article/details/61654277
发表评论
-
sapjco3 notes
2019-03-21 14:51 1095sapjco https://support.sap.com/ ... -
使用RestTemplate发送post JSON请求
2019-01-12 17:30 4575private final String BASE_URL = ... -
使用RestTemplate发送post JSON请求
2019-01-12 17:30 3385private final String BASE_URL = ... -
Spring线程池ThreadPoolTaskExecutor
2018-08-06 09:51 1777<!-- spring thread pool ex ... -
创建前缀索引报长度超出错误
2018-07-25 15:44 1646表结构定义如下: CREATE TABLE `sku` ( ` ... -
Mysql Varchar字符长度
2018-07-25 15:23 1296`sku_name` VARCHAR(200) NOT NUL ... -
使用 Spring RestTemplate 发送 post 请求
2018-07-23 18:49 11625注意点: 1)使用MultiValueMap设置入参,不要使 ... -
Java动态代理Dynamic Proxy
2018-07-21 16:33 726JAVA学习篇--静态代理VS动态代理 https://blo ... -
分布式实时日志分析解决方案 ELK 部署架构
2018-07-20 09:52 1141原文链接:http://www.importn ... -
为什么HashMap容量一定要为2的幂呢?
2018-07-19 10:07 1654原文链接:https://blog.csdn.net/wang ... -
为什么计算HashCode时通常选择31这个数?
2018-07-19 10:05 1330摘自http://www.importnew.com/2208 ... -
jackson自定义序列化和反序列化
2018-07-10 18:47 2174原文链接:https://blog.csdn.net/liu ... -
Spring MVC几种页面跳转方式
2017-07-26 10:31 1953Spring MVC几种页面跳转方式 http://blog. ... -
Pay special attention when modifying online running system
2017-06-23 10:25 0Never remove any properties, me ... -
Map中的Null key, Null Value
2017-06-14 10:52 1882ConcurrentHashMap的key和value都不能为 ... -
Java语法糖
2017-06-05 20:03 476Java语法糖之foreach http://www.imp ... -
Java集合相关
2017-05-24 17:55 0Java集合框架:ArrayList http://www. ... -
Java数据类型的转换:隐式(自动)转换与强制转换
2017-05-14 10:46 0http://blog.csdn.net/u011240877 ... -
分布式开放消息系统(RocketMQ)的原理与实践
2017-05-07 19:55 671分布式开放消息系统(RocketMQ)的原理与实践 http ... -
面试知识点复习(Interview knowledge review)
2017-05-07 18:39 0JVM,多线程相关知识 http://darrenzhu.it ...
相关推荐
我們使用Spring Framework裡,在Service 的 Method 給予@Transactional 系統就會去管理transaction,我們是在哪裡做了甚麼設定嗎? 為什麼下的這個Annotation成功會commit失敗會rollback呢? Transaction 管理做了...
Spring中的@Transactional事物回滚实例源码
主要介绍了Spring @Transactional工作原理详解,具有一定借鉴价值,需要的朋友可以参考下。
Spring3事务管理——使用@Transactional 注解.rar
spring事务管理注解jar,spring-tx-3.2.4.RELEASE.jar,导入项目即可
@Transactional实现原理.txt
主要介绍了Java注解@Transactional事务类内调用不生效问题及解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了深入学习Spring Boot排查 @Transactional 引起的 NullPointerException问题,需要的朋友可以参考下
在本篇文章里小编给大家整理了关于Spring声明式事务@Transactional详解内容,需要的朋友们可以参考下。
声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,
Spring源码学习十二:@Transactional是如何工作的1
关于spring中@Transactional注解传播属性原理的实验 具体方法: 主体形式:a方法调用b方法 a插入数据“one” b插入数据“two” a、b方法都可以有不同的传播级别或者不加事务注解(none): required(rd), required_...
主要介绍了Spring @Transactional注解失效解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring中@Transactional事务回滚(含实例详细讲解,附源码)Java开发Java经验技巧共8页.pdf.zip
主要介绍了spring的@Transactional注解用法解读,具有一定借鉴价值,需要的朋友可以参考下
本代码使用H2内存数据库演示spring事务使用,包括编程式事务,声明式事务@Transactional使用,自定义事务事务注解实现自定义事务管理器
今天我们来探讨一个有意思的spring源码问题,也是一个学生告诉了我现象我从源码里面找到了这个有意思的问题。 首先我们看service层的代码案例,如下: @Service("transationServiceImpl") public class ...
本篇文章主要介绍了浅谈Spring中@Transactional事务回滚及示例(附源码),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
今天小编就为大家分享一篇关于springboot中事务管理@Transactional的注意事项与使用场景,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧