Spring学习笔记十七---事务的转播行为
为什么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学习笔记十七---事务的转播行为相关推荐
- 【Spring学习笔记 九】Spring声明式事务管理实现机制
什么是事务?事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用,关乎数据准确性的地方我们一定要用到事务,防止业务逻辑出错. 什么是事务管理,事务管理对于企业应用而言至 ...
- spring学习笔记06-spring整合junit(出现的问题,解决的思路)
spring学习笔记06-spring整合junit(出现的问题,解决的思路) 文章目录 spring学习笔记06-spring整合junit(出现的问题,解决的思路) 3.1测试类中的问题和解决思路 ...
- Spring学习笔记之MyBatis
系列文章目录 Spring学习笔记 之 Springhttps://blog.csdn.net/weixin_43985478/article/details/124411746?spm=1001.2 ...
- Spring 学习笔记----->AOP
Spring 学习笔记----->AOP 代理模式 为什么学代理模式? 因为这就是Spring Aop的底层 代理模式的分类: 静态代理 动态代理 静态代理 生活用的例子: 房东 public ...
- 一箭双雕 刷完阿里P8架构师spring学习笔记+源码剖析,涨薪8K
关于Spring的叙述: 我之前死磕spring的时候,刷各种资料看的我是一头雾水的,后面从阿里的P8架构师那里拿到这两份资料,从源码到案例详细的讲述了spring的各个细节,是我学Spring的启蒙 ...
- JavaEE——Spring学习笔记03【AOP开发】
JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...
- JavaEE——Spring学习笔记01【Ioc开发的模式】
JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...
- CHY的Spring学习笔记---师从动力节点王鹤老师(B站白嫖)
Spring学习笔记 核心技术:ioc和aop ioc:使用di(依赖注入)实现控制反转,底层使用的是反射机制 spring可以创建自己写的类的对象,也可以创建非自定义对象,只要知道类的全限定名即可. ...
- 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传
作者:ssslinppp 1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...
最新文章
- c# 解析JSON的几种办法(转载)
- 第二十二章:动画(十五)
- Asp.NET 中 Ajax 的配置使用
- html的首选参数设置,设置 Animate 中的首选参数
- Windows/Linux中手动添加路由
- word List 43
- 获取DOM元素方法小结
- 聚类分析(三)Mini Batch KMeans算法
- android studio 默认继承AppCompatActivity动态设置标题title的方法
- python接口测试之新手篇
- 横琴今年建物联网基础设施
- Bochs 调试命令
- win C/C++程序通过Get方式获取网页源代码
- 马化腾:如果今天我才创业 会做什么切入中国互联网
- H5游戏开发-游戏的介绍
- wxPython色环电阻计算器
- 收集整理的一些windows好用的工具(持续更新)
- 消除设计教室中的白人至上主义我与设计大师cheryl d miller的对话
- [读书笔记]固定收益证券 第三版 Fixed income securities
- 用CSS3实现无限循环的无缝滚动