下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、spring管理事务操作的几种方式在java工程中,通常会涉及到事务操作处理。通过spring可以实现对事务操作的管理,简化 代码。下面详细介绍spring管理事务操作的几种方式及其具体应用。在讲解具体操作方式之前,先定义公共的beam言息,xml文件中实现代码如下:xml代码在定义hibernate的配置文件中添加以下代码,声明事物操作bean:<!-定义事务管理器(声明式的事务)><bean id=mtransactionmanageruclass=uorg.springframework.orm.hibernate3.hibernatetransactionmanage
2、ru><property name=nsessionfactoryu><ref local=msessionfactoryh /></property></bean>在定义service的毗置文件中添加以下代码,声明service bean:<!-业务逻辑层(是对各个dao层的正面封装)主要用到vv门面模式» -><bean id="fundservice"class=ncom.jack.fiind.service.serviceimpl.fundservicen><propert
3、y name=moperdaon><ref bean=hopera(ordaom /></property></bean>可能还有其他很多模块。<bean id="fundservice"/>可能只是其中的模块。在实际应用时,只要将需要事务处理的service方法名称定义为以deleteupdate> add> save 开头,在运行时出现异常后,会白动回滚。第一种:配置声明式事务的方法如下。这种是我们最常用的方法了,它适用于你的库表比较少的情况下。xml代码<bean id="fundser
4、vicedaoproxymclass=horg<ercept or. transactionproxyfactorybeanm><!-配置事务管理器-><property name=htransactionmanagerh><ref bean=ntransactionmanagern /></property><!-此属性指定目标类本省是否是代理的对象.如果目标类没有实现任何类,就设为true 代表自己-><property name=mproxytarg
5、etclassu><value>false</value></property><property name=nproxylnterfacesu><value>com.jack.fund.service.ifundservice</value></property><! h 标bean -><property name=htargeth><ref bean=hfundservicen /></property><!-配置事务属性-><pro
6、perty name=mtransactionattributes"><props><prop key=hdelete*h>propagation_required</prop><prop key=,add*h>propagation_required</prop><prop key=nupdate*n>propagation_required</prop><prop key=nsave*h>propagation_required</prop><prop key=
7、"find*',>propagation_required,readonly</prop></props></property></bean>以下可能还有其他的xxxservicedaoproxy.大家可以看出针对每一个功能模块配置一个业务 代理服务。如果模块多大话,就显得代码有点多了,发现他们只是稍微一点不一样。这时我们就应该想 到继承的思想。用第二种方法。第二种:配置声明式事务的方法如下。这种情况适合相对比较多的模块时使用xml代码<!-利用继承的思想简化配置,要把abstract=mtruen -><
8、;bean id=utransactionbasehclass=ercepto 匚 transaciionproxyfactorybcaiv lazy-init=ntrueh abstract=ntrueh><!-配置事务管理器-><property name=,transactionmanagern><ref bean=ntransactionmanageru /></property><!-配置事务属性-><property name=,trans
9、actionattributes'<props><prop keyidele(e*“>propagation_requiredv/prop><prop key=,add*n>propagation_required</prop><prop key=" update*u>propagation_required</prop><prop key=hsave*h>propagation_required</prop><prop key=hfind*n>propagati
10、on_required,readonly</prop></props></property></bean>而具体的模块可以简单的这样配置。只要指明它的parent (父类)就可以了。父类一般把abstract=htrue因为在容器加载的时候不需要初始化,等到用的时候再有它的子 类调用的时候,再去初始化。xml代码<bean id=nfundservicedaoproxyh parent=,transactionbaseh ><property name=mtargeth><ref bean=,fundservicem
11、 /></property></bean><bean id=nfundservicedaoproxym parent=mtransactionbasem ><property name=mtargetu><ref bean=,fundservice'r /></property></bean>这样配置的话,如果有多个像fundservice这样模块时,可以少些很多重复的代码。第三种:配置声明式事务的方法如下。主要利用beannameautoproxycreator自动创建事务代理xml代码<
12、bean id=utransactioninterceptorhclass=horg.springframework.transactio n. interceptor. tra nsactionlnterceptof、<property name=mtransactionmanagern><ref bean=ntransactionmanagerm /></property><!-配置事务属性-><property name=ntransactionattributesh><props><prop key=udel
13、ete* m>propagation_required</prop><prop key="add;:n>propagation_required</prop><prop key=',update*h>propagation_required</prop><prop key=“save*”>propagation_required</prop><prop key=hfind*h>propagation_required,readonly</prop></pro
14、ps></property></bean><beanclass=norg.springframework.aop.framework.autoproxy. beannameautoproxycreatorm><property name=nbeannamesn><list><value>fundservice</value></list></property><property name=minterceptornamesh><list><value&
15、gt;tra nsactionlnterceptor</value></list></property></bean>这种方法主要利用了拦截器的原理。前三种方法一般都必需指定具体的模块bean.如果模块过多话,比如一个大型的网站一般有几十个模块,我们就得考虑用第四种的配置方 式了。自动创建事务代理的方式了。第四种:配置声明式事务的方法如下。xml代码<bean id=utransactionlnterceptornclass=hercepto 匚 tnmsactionlr
16、hercepiof、<property name=htransactionmanagern><ref bean=mtransactionmanagern /></property></bean><!-自动代理一><bean id=nautoproxyhclass=horg.spri ngframework.aop. framework, autoproxy. bea nn ameautoproxycreatorm> <!-可以是service或dao层(最好是针对业务层*service)-><proper
17、ty name=mbeannamesu><list><value>*service</value></list></property><property name=hinterceptornamesn><list><value>transactionlnterceptor</value></list></property></bean>白动代理还有一种用法就是结合正则表达式和advice使用。xml代码<bean id二"tran
18、sactioninterceptor”class=ercepto 匚 tran sactionlnterceptorn><property name=mtransactionmanagerh><ref bean=%ransaclionmanager” /></property></bean><bean id=h autoproxy creatornclass=horg.springframework.aop.framework.autoproxy.defaultadvisorautoproxycreatorm ></bean><bean id=nregexpmethodpointcutadvisornclass=,org.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《妇科中医护理查房》课件
- 走遍天下书为侣-课件(-精)
- 2024年全省交通综合执法职业技能竞赛理论知识考试题库(含答案)
- 单位人力资源管理制度范例大合集
- 单位管理制度展示合集职员管理十篇
- 英语定语从句总复习课件
- 绘画中的透视现象课件-人美版
- 4万吨年纤维绿色化处理技术产业化项目可行性研究报告模板立项审批
- 国家知识产权局专利分析项目及成果介绍
- 2025年病毒克项目可行性研究报告
- 2024-2025学年上学期福建高二物理期末卷2
- 2024-2025年第一学期小学德育工作总结:点亮德育灯塔引领小学生全面成长的逐梦之旅
- 2024四川阿坝州事业单位和州直机关招聘691人历年管理单位遴选500模拟题附带答案详解
- 麻醉科工作计划
- 2024年新进员工试用期考核标准3篇
- 《英美文化概况》课件
- 四川省2023年普通高中学业水平考试物理试卷 含解析
- 2024-2025学年人教版八年级上学期数学期末复习试题(含答案)
- 2024年医院康复科年度工作总结(4篇)
- 五金耗材材料项目投标方案(技术方案)
- 防网络电信诈骗主题班会
评论
0/150
提交评论