Spring编程式事务管理
本文内容纲要:
- 两种Spring事务管理方式:编程式、声明式。- 两者不同点
- 编程式事务TransactionTemplate讲解
- 当业务复杂时,比如请求外部地址都需要用编程式事务来做业务
————————————————————————————————
版权声明:本文为CSDN博主「工作QQ感冒的石头」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39291929/article/details/88716104
————————————————————————————————
两种Spring事务管理方式:编程式、声明式。
Spring提供了两种声明式事务管理,分别是AOP切面和注解@Transactional
Spring提供两种方式的编程式事务管理,分别是:使用TransactionTemplate和直接使用PlatformTransactionManager。
两者不同点
- 声明式事务最大的优点就是不需通过编程的方式而进行管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明,便可将事务规则应用到业务逻辑中。
- 声明式事务不足的地方在于,与编程式事务相比,只能作用到方法级别,无法像编程式事务那样可以作用到代码块级别。
编程式事务TransactionTemplate讲解
使用TransactionTemplate
不需要显式地开始事务,甚至不需要显式地提交事务。这些步骤都由模板完成。但出现异常时,应通过TransactionStatus 的setRollbackOnly
显式回滚事务。
TransactionTemplate 的execute
方法接收一个TransactionCallback 实例。Callback 也是Spring 的经典设计,用于简化用户操作, TransactionCallback 包含如下方法。
Object dolnTransaction(TransactionStatus status)
。该方法的方法体就是事务的执行体。
如果事务的执行体没有返回值,则可以使用TransactionCallbackWithoutResultl类的实例。这是个抽象类,不能直接实例化,只能用于创建匿名内部类。它也是TransactionCallback 接口的子接口,该抽象类包含一个抽象方法:
void dolnTransactionWithoutResult(TransactionStatus status)
该方法与dolnTransaction 的效果非常相似,区别在于该方法没有返回值,即事务执行体无须返回值。
example:
transactionTemplate.execute(new TransactionCallback() { public Object doInTransaction(TransactionStatus status) {
try{
}
catch (Exception e) {
status.setRollbackOnly();
}
});
当业务复杂时,比如请求外部地址都需要用编程式事务来做业务
本文内容总结:两种Spring事务管理方式:编程式、声明式。,两者不同点,编程式事务TransactionTemplate讲解,当业务复杂时,比如请求外部地址都需要用编程式事务来做业务,
原文链接:https://www.cnblogs.com/platinumcat/p/13441614.html
以上是 Spring编程式事务管理 的全部内容, 来源链接: utcz.com/z/362797.html