javaweb学习总结(四)spring配置Transaction的五种方式
来源:互联网 发布:terrans force s4 知乎 编辑:程序博客网 时间:2024/05/22 12:23
Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。
DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,TransactionManager的实现为HibernateTransactionManager。
具体如下图:
根据代理机制的不同,总结了五种Spring事务的配置方式,配置文件如下:
第一种方式:每个Bean都有一个代理
第二种方式:所有Bean共享一个代理基类
第三种方式:使用拦截器
第四种方式:使用tx标签配置的拦截器
Spring使用 <tx:advice>和 <aop:config> 用来配置事务,具体如何配置你可以参考Spring文档。
我解释一下execution(*com.bluesky.spring.dao.*.*(..))中几个通配符的含义:
第一个 * —— 通配 任意返回值类型
第二个 * —— 通配 包com.bluesky.spring.dao下的任意class
第三个 * —— 通配 包com.bluesky.spring.dao下的任意class的任意方法
第四个 .. —— 通配 方法可以有0个或多个参数
综上:包com.bluesky.spring.dao下的任意class的具有任意返回值类型、任意数目参数和任意名称的方法<tx:advice/> 有关的设置这一节里将描述通过 <tx:advice/>
标签来指定不同的事务性设置。默认的 <tx:advice/>
设置如下:
事务传播设置是
REQUIRED
隔离级别是
DEFAULT
事务是 读/写
事务超时默认是依赖于事务系统的,或者事务超时没有被支持。
任何
RuntimeException
将触发事务回滚,但是任何 checkedException
将不触发事务回滚
这些默认的设置当然也是可以被改变的。 <tx:advice/>
和 <tx:attributes/>
标签里的 <tx:method/>
各种属性设置总结如下:
属性 是否需要? 默认值 描述
name
是 与事务属性关联的方法名。通配符(*)可以用来指定一批关联到相同的事务属性的方法。 如:'get*'
、'handle*'
、'on*Event'
等等。
propagation
不REQUIRED事务传播行为isolation
不DEFAULT事务隔离级别timeout
不-1事务超时的时间(以秒为单位)read-only
不false事务是否只读?rollback-for
不 将被触发进行回滚的 Exception(s)
;以逗号分开。 如:'com.foo.MyBusinessException,ServletException'
no-rollback-for
不 不 被触发进行回滚的 Exception(s)
;以逗号分开。 如:'com.foo.MyBusinessException
第五种方式:全注解
- javaweb学习总结(四)spring配置Transaction的五种方式
- Spring-Transaction 事务配置的五种实现方式
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务配置的五种方式--很好的总结
- 总结了五种Spring事务的配置方式
- 7.10 写一函数,输入一行字符,将此字符串中最长的单词输出。
- Maven pom
- JAVA时间相关操作
- Android 框架学习2:使用编译时注解简单实现类似 ButterKnife 的效果
- 函数重载:仅根据函数返回值类型不能实现重载
- javaweb学习总结(四)spring配置Transaction的五种方式
- 大龄程序员肉翻记录【一】
- GitHub控件之BadgeView(数字提醒)
- 微信开发:js sdk 分享(java)
- md5加密,第二次加密,解密
- 一分钟教会你如何做自媒体淘客
- Swift之类与结构体
- PAT 1003. 我要通过!(20)
- 0912 Oracle函数