下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年台州市商贸核心区开发建设投资集团有限公司公开招聘工作人员的备考题库完整参考答案详解
- 2026年南京中远海运物流有限公司招聘备考题库及答案详解1套
- 2026年小学语文老师招聘备考题库完整参考答案详解
- 2026年台州市椒江区进出口企业协会公开招聘编外工作人员备考题库及答案详解1套
- 市商务局内控制度汇编
- 队伍内控制度
- 内控制度报告填报流程
- 包装中心内控制度
- 医用物资采购内控制度
- 国土所内控制度
- 殡仪馆鲜花采购投标方案
- 中小学生意外伤害防范
- 动静脉瘘课件
- 新疆宗教事务条例课件
- 2025年工会主席述职报告模版(六)
- 2025四川成都轨道交通集团有限公司校招9人笔试历年备考题库附带答案详解试卷2套
- 药品生产培训课件
- 贵州省县中新学校计划项目2024-2025学年高一上学期期中联考地理试题(解析版)
- 【2025年】天翼云解决方案架构师认证考试笔试卷库下(多选、判断题)含答案
- 2024-2025学年度浙江特殊教育职业学院单招《语文》试卷附完整答案详解(全优)
- 保护患者隐私培训课件
评论
0/150
提交评论