- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于Sprin AOP的事务处理
关于外汇局项目使用Spring AOP进行事务控制的总结
---软件开发事业部 黄立坤
事务控制
事务是一个最小的工作单元,不论成功与否都作为一个整体进行工作。由于事务是由几个任务组成的,因此如果一个事务作为一个整体是成功的,则事务中的每个任务都必须成功。如果事务中有一部分失败,则整事务失败。不会有部分完成的事务。
当情况为一个原子数据库操作的时候,业务方法中抛出异常,该原子数据库操作在数据库层会自动回滚。
当情况为多个原子数据库操作作为一个集合对应用户一次操作业务时,就需要将这个数据库操作集合作为一个事务进行控制,如上文所说,一个操作出现异常导致失败,整个事务失败,所有数据库操作回滚。若不进行这样控制,后果可以想象,尤其对于金融项目。例如,银行转账的例子,如果从一个帐户中提出钱,而在钱到达另一个帐户前出错,若不将整个转账作为一个事务进行处理话,钱会莫名其妙地消失。
Spring AOP概述
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
在了解Spring AOP之前,我们需要先了解AOP的概念。如上所说,AOP是面向切面编程的思想。举个形象点的例子:做饭,在你的业务方法中也许只有如何去做这个饭。但是现在有这样一个需求,做饭之前需要先开燃气,做饭之后要关燃气。将做饭过程当做一根黄瓜,就需要在黄瓜头剁一刀,在那个剖面加入开燃气,在黄瓜尾剁一刀,在这个剖面加入关燃气。
了解了AOP,我们来看看Spring中如何实现AOP编程的。
Spring AOP思想的实现是通过动态代理机制实现的。将横切业务逻辑设计成一个类,作为处理者(Handler)服务于各个核心业务类。业务方法实现一个接口,在处理者(Handler)的方法中可以生成该接口的一个代理业务实现类来反射业务方法。如上面的例子,我们可以将燃气操作设计成一个类,他作为一个处理者。在这个处理者的方法中我们可以反射到你实现接口的实现类业务方法,从而服务于你做饭,服务你做任何饭。
我们可以把AOP当做是Spring的一种增强,它可以使我们自定义切面,自定义获取切面后的操作。
Spring AOP 实现事务控制
了解了以上的内容,对于Spring AOP实现事务控制,只需要将我们上面提到的例子中的天然气操作换成开启事务、关闭事务即可。但是具体到编码中,可以有以下问题:
如何获取切面。
如何添加事务和反射业务方法。
对于第一个问题,Spring已经提供给了我们。Spring支持切入点表达式的匹配模式。如外汇局项目Spring配置文件中下如下:
bean class=org.springframework.aop.support.RegexpMethodPointcutAdvisor
property name=patterns
list
value.*Service\.execute.*/value
value.*Service\.save.*/value
value.*Service\.remove.*/value
value.*Service\.add.*/value
value.*Service\.modify.*/value
value.*Service\.send.*/value
value.*Service\.load.*/value
value.*Service\.hand.*/value
value.*Service\.adjust.*/value
/list
/property
property name=advice
bean class=mon.aop.TransactionInterceptor /
/property
/bean
黄色标注部分即为表达式匹配模式,对于每一次的后台请求。过滤器会去比较请求Service方法的前几个字母,如果以add、save等开头的话,就会在后面注入的绿色标注bean mon.aop.TransactionInterceptor中拦截到。如外汇局项目登记表登记操作,当用户点击保存按钮,前台JS会给后台发送异步请求,
unieap.Action.request({
url:
您可能关注的文档
最近下载
- 高边坡专项施工方案(专家论证版).pdf VIP
- 《工程化学基础》教案-第3章-2011.ppt VIP
- 抗日英雄王二小.pptx VIP
- 第5课 用发展的观点看问题-【中职专用】2024年中职思想政治《哲学与人生》金牌课件(高教版2023·基础模块).pptx VIP
- 老友记台词剧本第一季第1集中英双语左右对照.pdf VIP
- 形势与政策社会实践报告模板.docx VIP
- 全套SPC表格(很全面) CPK.xls VIP
- T_CI 540-2024 红枣蒸馏酒生产技术规程.pdf
- 施工组织设计方案(高速公路通信迁改).docx VIP
- Part3-4 Unit6 Craftsmanship课件高一英语(高教版基础模块2).pptx
文档评论(0)