spring支持声明式事务管理和编程式事务管理两种方式。

编程式事务使用TransactionTemplate来定义,可在代码级别对事务进行定义。

声明式事务基于aop来实现,缺点是其最细粒度的事务声明只能到方法级别。

声明式事务管理有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。

    <!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 配置基于注解的声明式事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />

事务的隔离级别和超时回滚默认基于底层数据库。

2. @Transactional注解可以对事务实现元数据的配置。

public class TransactionalService {
@Transactional("order")
public void setSomething(String name) { ... }
@Transactional("account")
public void doSomething() { ... }
}

xml中应用的上下文声明:

<tx:annotation-driven/>
<bean id="transactionManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
...
<qualifier value="order"/>
</bean> <bean id="transactionManager2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
...
<qualifier value="account"/>
</bean>

spring事务的回滚规则:

  默认情况下,spring在当前事务的上下文抛出一个非检查性异常(同时包括error),即运行时异常(RuntimeException)和其子类时,事务才会回滚。也就是说,默认情况下,spring在程序运行时抛出IOException等一些非运行时异常是不会回滚的,只有在由于程序设计漏洞而抛出的RuntimeException(比如NullPointerException)或者error时,事务才回滚。

最新文章

  1. python 类型大小
  2. Vim 常用技巧:
  3. Application.Run()和Form.Show()以及Form.ShowDialog()
  4. Java 对象内存占用
  5. 《BI项目笔记》增量ETL数据抽取的策略及方法
  6. 在Mac OS X上用自己编译出的CoreCLR运行.NET程序
  7. [python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈
  8. lstm的debug模式下编译不行貌似
  9. android 开发 system/app目录下面有多个重复包名的apk,会不会冲突
  10. 委托、事件和Lambda
  11. [转载]深入理解JAVA的接口和抽象类
  12. Windows环境下使用Cmake ndk编译fdk-aac
  13. Lua获取网络时间
  14. mysql安装设置mysql字符集utf8及修改密码
  15. CentOS7安装k8s
  16. 解决win10环境下python Selenuim调用Chrome时提示data 及Chrome正在受自动软件控制的方法
  17. Fork/Join框架
  18. art 校准时设备端操作
  19. C#将XML转换成JSON 使用 JavaScript 将 XML 转成 JSON
  20. java MongoDB查询(一)简单查询

热门文章

  1. Bootstrap 学习笔记5 进度条媒体对象和well组件
  2. CSS中设置字体样式
  3. Js类的静态方法与实例方法区分以及jQuery如何拓展两种方法
  4. 《STL源码剖析》——第五、六:关联容器与算法
  5. vue手写轮播
  6. Spring事务传播及数据库事务操作
  7. Codeforces - 1189B - Number Circle - 贪心
  8. python学习第十四天字典的del(),pop().popitem(),clear()删除方法
  9. P2469 [SDOI2010]星际竞速(费用流)
  10. JS高级 — 函数中的this指向问题