为什么80%的码农都做不了架构师?>>>   

spring 事务注解

默认遇到throw new RuntimeException("...");会回滚
需要捕获的throw new Exception("...");不会回滚

// 指定回滚
@Transactional(rollbackFor=Exception.class)
    public void methodName() {
       // 不会回滚
       throw new Exception("...");
    }
//指定不回滚
@Transactional(noRollbackFor=Exception.class)
    public ItimDaoImpl getItemDaoImpl() {
        // 会回滚
        throw new RuntimeException("注释");
    }

// 如果有事务,那么加入事务,没有的话新建一个(不写的情况下)
    @Transactional(propagation=Propagation.REQUIRED)
    // 容器不为这个方法开启事务
    @Transactional(propagation=Propagation.NOT_SUPPORTED)
    // 不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
    @Transactional(propagation=Propagation.REQUIRES_NEW)
    // 必须在一个已有的事务中执行,否则抛出异常
    @Transactional(propagation=Propagation.MANDATORY)
    // 必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)
    @Transactional(propagation=Propagation.NEVER)
    // 如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.
    @Transactional(propagation=Propagation.SUPPORTS)
   
    /*
    public void methodName(){
       // 本类的修改方法 1
       update();
       // 调用其他类的修改方法
       otherBean.update();
       // 本类的修改方法 2
       update();
    }
    other失败了不会影响 本类的修改提交成功
    本类update的失败,other也失败
    */
@Transactional(propagation=Propagation.NESTED)
// readOnly=true只读,不能更新,删除
@Transactional (propagation = Propagation.REQUIRED,readOnly=true)
// 设置超时时间
@Transactional (propagation = Propagation.REQUIRED,timeout=30)
// 设置数据库隔离级别
@Transactional (propagation = Propagation.REQUIRED,isolation=Isolation.DEFAULT)

package springjdbc.tx;import java.util.List;public interface ICashier {public void checkout(String userName , List<String> isbns);
}
package springjdbc.tx;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;import java.util.List;@Service("iCashier")
public class CashierImpl implements  ICashier {@Autowiredprivate IBookShopService iBookShopService;@Transactional(propagation = Propagation.REQUIRED)//@Transactional(propagation = Propagation.REQUIRES_NEW)@Overridepublic void checkout(String userName, List<String> isbns) {for (String isbn : isbns) {iBookShopService.purchase(userName, isbn);}}
}
package springjdbc.tx;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.Arrays;public class TestTx {private ApplicationContext ctx = null;private IBookShopDao iBookShopDao;private IBookShopService bookShopService;private ICashier iCashier;{ctx = new ClassPathXmlApplicationContext("springjdbc/application.xml");iBookShopDao = ctx.getBean(IBookShopDao.class);bookShopService = ctx.getBean(IBookShopService.class);iCashier = ctx.getBean(ICashier.class);}@Testpublic void testTransactionPropagation() {iCashier.checkout("AA", Arrays.asList("1001", "1002"));}
}

转载于:https://my.oschina.net/jimyao/blog/636488

Spring学习笔记十七---事务的转播行为相关推荐

  1. 【Spring学习笔记 九】Spring声明式事务管理实现机制

    什么是事务?事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用,关乎数据准确性的地方我们一定要用到事务,防止业务逻辑出错. 什么是事务管理,事务管理对于企业应用而言至 ...

  2. spring学习笔记06-spring整合junit(出现的问题,解决的思路)

    spring学习笔记06-spring整合junit(出现的问题,解决的思路) 文章目录 spring学习笔记06-spring整合junit(出现的问题,解决的思路) 3.1测试类中的问题和解决思路 ...

  3. Spring学习笔记之MyBatis

    系列文章目录 Spring学习笔记 之 Springhttps://blog.csdn.net/weixin_43985478/article/details/124411746?spm=1001.2 ...

  4. Spring 学习笔记----->AOP

    Spring 学习笔记----->AOP 代理模式 为什么学代理模式? 因为这就是Spring Aop的底层 代理模式的分类: 静态代理 动态代理 静态代理 生活用的例子: 房东 public ...

  5. 一箭双雕 刷完阿里P8架构师spring学习笔记+源码剖析,涨薪8K

    关于Spring的叙述: 我之前死磕spring的时候,刷各种资料看的我是一头雾水的,后面从阿里的P8架构师那里拿到这两份资料,从源码到案例详细的讲述了spring的各个细节,是我学Spring的启蒙 ...

  6. JavaEE——Spring学习笔记03【AOP开发】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

  7. JavaEE——Spring学习笔记01【Ioc开发的模式】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

  8. CHY的Spring学习笔记---师从动力节点王鹤老师(B站白嫖)

    Spring学习笔记 核心技术:ioc和aop ioc:使用di(依赖注入)实现控制反转,底层使用的是反射机制 spring可以创建自己写的类的对象,也可以创建非自定义对象,只要知道类的全限定名即可. ...

  9. 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传

    作者:ssslinppp       1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...

最新文章

  1. c# 解析JSON的几种办法(转载)
  2. 第二十二章:动画(十五)
  3. Asp.NET 中 Ajax 的配置使用
  4. html的首选参数设置,设置 Animate 中的首选参数
  5. Windows/Linux中手动添加路由
  6. word List 43
  7. 获取DOM元素方法小结
  8. 聚类分析(三)Mini Batch KMeans算法
  9. android studio 默认继承AppCompatActivity动态设置标题title的方法
  10. python接口测试之新手篇
  11. 横琴今年建物联网基础设施
  12. Bochs 调试命令
  13. win C/C++程序通过Get方式获取网页源代码
  14. 马化腾:如果今天我才创业 会做什么切入中国互联网
  15. H5游戏开发-游戏的介绍
  16. wxPython色环电阻计算器
  17. 收集整理的一些windows好用的工具(持续更新)
  18. 消除设计教室中的白人至上主义我与设计大师cheryl d miller的对话
  19. [读书笔记]固定收益证券 第三版 Fixed income securities
  20. 用CSS3实现无限循环的无缝滚动

热门文章

  1. 30条HTML代码编写指南 for入门者
  2. 两个免费转换视频的软件,实现服务器端Video2FLV
  3. 【Linux就该这么学 20期培训笔记 02】新手必须掌握的 Linux 命令
  4. 关于微服务架构的思考
  5. ASP.NET Core 2.0 : 九.从Windows发布到CentOS的跨平台部署
  6. ignite服务中的bean注入为空
  7. Windows 8.1内置微软五笔输入法
  8. ListView和GridView的一些杂七八杂的内容
  9. CDays–2 完成核心功能 CMD模块 Python基础教程 cmd cli
  10. Linux项目零散笔记