三亚品茶工作室,海口qm论坛,常州桑拿spa论坛官网,附近茶楼

欢迎您访问郑州兴邦电子股份有限公司官方网站!
阿里巴巴诚信通企业
全国咨询热线:40000-63966
兴邦电子,中国水控机第一品牌

联系兴邦电子

全国咨询热线:40000-63966

工厂:河南省 郑州市 高新区莲花街电子电器产业园

Spring事务的传播行为

文章出处:http://www.wtmpjg.cn 作者:兴邦开发部

[文章内容简介]:Spring事务的传播行为

在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。

Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这个例外是unchecked

如果遇到checked意外就不回滚。

如何改变默认规则:

1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)

2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)

3 不需要事务管理的(只查询的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)

在整个方法运行前就不会开启事务

       还可以加上:@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true),这样就做成一个只读事务,可以提高效率。

       各种属性的意义:

       REQUIRED:业务方法需要在一个容器里运行。如果方法运行时,已经处在一个事务中,那么加入到这个事务,否则自己新建一个新的事务。

       NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为他开启事务,如果方法在一个事务中被调用,该事务会被挂起,调用结束后,原先的事务会恢复执行。

       REQUIRESNEW:不管是否存在事务,该方法总汇为自己发起一个新的事务。如果方法已经运行在一个事务中,则原有事务挂起,新的事务被创建。

       MANDATORY:该方法只能在一个已经存在的事务中执行,业务方法不能发起自己的事务。如果在没有事务的环境下被调用,容器抛出例外。

       SUPPORTS:该方法在某个事务范围内被调用,则方法成为该事务的一部分。如果方法在该事务范围外被调用,该方法就在没有事务的环境下执行。

       NEVER:该方法绝对不能在事务范围内执行。如果在就抛例外。只有该方法没有关联到任何事务,才正常执行。

       NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中。如果没有活动事务,则按REQUIRED属性执行。它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器起效。
 

本文关键词:spring,事务传播行为,一卡通 [ ]
上一篇:开放系统参考模型网络模型[ 05-28 ] 下一篇:TCP/IP协议[ 06-18 ]
回到顶部
主站蜘蛛池模板: 德惠市| 宜兰市| 通辽市| 鲁甸县| 唐河县| 南平市| 同江市| 白玉县| 沁源县| 常山县| 文昌市| 栾城县| 兰西县| 沂源县| 贵州省| 宁晋县| 全椒县| 洞口县| 永和县| 莱阳市| 牡丹江市| 马鞍山市| 韶关市| 尼勒克县| 长海县| 黑龙江省| 万全县| 砀山县| 扶余县| 德惠市| 元氏县| 南投县| 博白县| 绥阳县| 南部县| 云阳县| 荔波县| 浦北县| 壤塘县| 长丰县| 盖州市|