- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
spring使用基于注解的AOP事务管理
spring使用基于注解的AOP事务管理
16.6 AOP事务管理
AOP事务管理利用了Spring AOP的基础设施,在大多数情况下,Spring AOP会创建一个JDK代理以拦截方法调用。你可以使用装载时编织以在装载期编织切面,这样就不需要代理了(如果你记不清什么是装载时编织,请参看第6章)。你有两种方式来配置Spring AOP事务管理,基于注解的配置以及XML配置。
16.6.1 使用基于注解的AOP事务管理
你可以借助于AOP的自动代理,通过注解将事务性行为引入到现有的bean中。让我们以代码清单16-21开始吧,它展示了类DeclarativeTxBankService。
代码清单16-21 DeclarativeTxBankService实现
? 请注意@Transactional属性,为了让Spring的事务管理基础设施可以利用该属性创建恰当的切入点和通知,我们需要使用AOP的自动代理和注解驱动的事务支持。代码清单16-22展示了与该注解相对应的XML配置。
代码清单16-22 基于注解的事务管理的配置文件
? 该XML配置文件展示了标准的bankService bean声明,紧跟其后的是tx:annotation-driven/和aop:aspectj-autoproxy/标签。tx:annotation-driven/标签使用@Transactional注解创建恰当的事务管理切面。接下来由aop:aspectj-autoproxy/通知匹配的bean。
1.探索tx:annotation-driven标签
tx:annotation-driven/标签是注解驱动的事务管理支持的核心。表16-3列出了tx:annotation- driven/标签的所有属性。
表16-3 tx:annotation-driven/标签的属性
属性 说明 transactionManager 指定到现有的PlatformTransaction
Manager bean的引用,通知会使用该引用 mode 指定Spring事务管理框架创建通知bean的方式。
可用的值有proxy和aspectj。前者是默认值,
表示通知对象是个JDK代理;后者表示
Spring AOP会使用AspectJ创建代理 order 指定创建的切面的顺序。只要目标对象有
多个通知就可以使用该属性 proxy-target-class 该属性如果为true就表示你想要代理目标
类而不是bean所实现的所有接口 2.探索@Transactional注解
凭借@Transactional注解我们就可以控制通知将要创建的事务定义的方方面面。就像使用transactionAttributes属性表达式一样,你可以指定传播、隔离级别、超时以及允许和不允许的异常。表16-4列出了@Transactional注解的所有属性。
表16-4 @Transactional注解的属性
属性 类型 说明 propagation org.springframework.
annotaion.transaction.Propagation 指定事务定义中
使用的传播 isolation org.springframework.
annotation.
transaction.Isolation 设定事务的隔离级别 timeout int 指定事务的超时
(单位为秒) readOnly boolean 如果为true,事务
就被标识为只读 noRollbackFor Class? extends Throwable[] 目标方法可抛出的
异常所构成的数组,
但通知仍会提交事务 rollbackFor Class? extends Throwable[] 异常所构成的数组,
如果目标方法抛出了
这些异常,通知就会回滚事务 3.基于注解的事务管理小结
通过@Transactional注解,我们可以轻松地为一个方法声明事务。其好处在于你可以很直观地看到哪些方法带有事务,因为方法上面有该注解修饰。其缺点是你不得不为每个需要事务的方法都加上@Transactional注解。如果你使用的是默认的事务属性,这就不算什么问题,但当你需要设置其他的事务属性时,这就变得很乏味了,因为你要不停的复制、粘贴。另一种方式就是用@Transactional注解去修饰类。这会将事务应用到该类中的所有方法。这种方式的问题在于所有的方法,包括简单的读取方法和设置方法也都运行在事务中了,尽管根本不需要这么做。XML AOP事务管理能更好地处理这种情况。
说明?虽然说通过使用@Transactional注解会使所有方法运行在事务中,但我还要再多说几句:其实准确的说法应该是如果某个类被
您可能关注的文档
- P5全彩方案(福建彩亮).doc
- P5模具三维与新发来的砂芯比较.doc
- OMUXBF155M光纤综合接入用户手册.doc
- pcb板焊接缺陷产生的原因及解决措施.doc
- PCS-G50端简易使用手册.doc
- PDCA方法在连退炉内衬板铺设过程中的应用.docx
- PDG转PDF全攻略(超星电子书打印破解).doc
- PDA操作指南new.doc
- PE给水管材与钢管的比较8.10.1.doc
- pe设备操作规程.doc
- 2.1 教室有多长 课件 2025北师大版数学二年级上册.pptx
- 综合实践 参加欢乐购物活动 课件 2025北师大版数学二年级上册.pptx
- 第2课时 分水果 课件 2025北师大版数学二年级上册.pptx
- 第1课时 折一折,做一做 课件 2025北师大版数学二年级上册.pptx
- 第五单元7-9的表内乘除法第2课时 8的乘法口诀 课件 2025人教版数学二年级上册.pptx
- 第1课时 平移和旋转 课件 2025苏教版数学三年级上册.pptx
- 第4课时 回家路上 课件 2025北师大版数学二年级上册.pptx
- 5.1.1任意角 说课课件高一上学期数学人教A版必修第一册 (1).pptx
- 第3课时 农家小院 课件 2025北师大版数学二年级上册.pptx
- 第三单元 大数加与减第6课时 里程表 课件 2025北师大版数学三年级上册.pptx
文档评论(0)