Spring事务配置的五种方式_第1页
Spring事务配置的五种方式_第2页
Spring事务配置的五种方式_第3页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Spring事务配置的五种方式Spring配置文件中关于事务配置总是由三个组成局部,分别是 DataSource、 TransactionManager和代理机制这三局部,无论哪种配置方式,一般变化的只 是代理机制这局部。DataSource、TransactionManager这两局部只是会根据数据访问方式有 所变化,比方使用Hibernate进展数据访问 时,DataSource实际为 SessionFactory ,TransactionManager 的实现为 Hiber nateTra nsact ionMan ager 。具体如以下图:bct:a5aurceDflfaS olfcc

2、T ra n$ac ti onMcncctgrTrans ocr to/i Wo nagfl r-H ibt rnai eTnsoefienMarwger如个on ff卜代歼Bean和代膛新/l Ban兀卒一今狀J?軀賞J pa Tran r T i 口 可弓上 r*代理机剳仃1TH 齐呪冒r.根据代理机制的不同,总结了五种 Spring事务的配置方式,配置文件如下: 第一种方式:每个Bean都有一个代理<?xml versio n="1.0" en codi ng="UTF-8"?><bea ns xml ns=".spri

3、 /schema/bea ns"xml ns:xsi="./2001/XMLSchema-i nsta nee"xml ns:c on text=".spri /schema/co ntext"xml ns:aop=".spri /schema/aop"xsi:schemaLocatio n=".spri /schema/bea ns.spri /sche

4、ma/bea.spri /schema/co ntext.spri /schema/co.spri /schema/aop .spri /schem a/aop/spri ng-aop-2.5.xsd"><bea n id="sessi onF actory"class="org.spri ngframework.orm.hiber nate3.LocalSessi onF actoryBea n"><

5、property n ame="c on figLocatio n"value="classpath:hibernate.cfg.xml" /><property n ame="co nfigurati on Class" value="org.hibernate.cfg.A nn otatio nCon figuratio n" /></bea n><!- 定义事务管理器声明式的事务-><bea n id="tra nsacti onMan ager&qu

6、ot;class="org.spri ngframework.orm.hibernate3.HibernateTra nsactio nMan ager "><property n ame="sessio nF actory" ref="sessi onF actory" /></bea n><!- 配置 DAO -><bea n id="userDaoTarget" class=".bluesky.spri ng.dao.UserDaolmpl"

7、> <property n ame="sessio nF actory" ref="sessi onF actory" /></bea n><bea n id="userDao" class="org.spri ngframework.tra nsactio n.in terceptor.Tra nsactio nProxyFa ctoryBea n"><!-配置事务管理器-><property n ame="tra nsact ionMan a

8、ger"ref="tra nsactio nMan ager" /><property n ame="target" ref="userDaoTarget" /><property n ame="proxyI nterfaces"value=".bluesky.spri ng.dao.Ge neratorDao" /><!- 配置事务属性-><property n ame="tra nsactio nAttributes&quo

9、t;><props><prop key="*">PROPAGATION_REQUIRED</prop></props></property>v/bea n>v/bea ns>第二种方式:所有Bean共享一个代理基类<?xml versio n="1.0" en codi ng="UTF-8"?><bea ns xml ns=".spri /schema/bea ns"xml ns:xsi=&

10、quot;./2001/XMLSchema-i nsta nee"xml ns:c on text=".spri /schema/co ntext"xml ns:aop=".spri /schema/aop"xsi:schemaLocatio n=".spri /schema/bea ns.spri /schema/bea.spri /schema/co ntext.spri

11、 /schema/co.spri /schema/aop .spri /schem a/aop/spri ng-aop-2.5.xsd"><bea n id="sessi onF actory"class="org.spri ngframework.orm.hiber nate3.LocalSessi onF actoryBea n"> vproperty n ame="c on figLocatio n"value=

12、"classpath:hibernate.cfg.xml" />vproperty n ame="co nfigurati on Class" value="org.hibernate.cfg.A nn otatio nCon figuratio n" /> v/bea n><!-定义事务管理器声明式的事务-><bea n id="tra nsacti onMan ager"class="org.spri ngframework.orm.hibernate3.Hiber

13、nateTra nsactio nMan ager ">vproperty n ame="sessio nF actory" ref="sessi onF actory" /> v/bea n>vbean id="transaction Base"class="org.spri ngframework.tra nsactio n.in terceptor.Tra nsactio nProxyFa ctoryBea n"lazy-init="true" abstract

14、="true">v!-配置事务管理器->vproperty n ame="tra nsactio nMan ager" ref="tra nsactio nMan ager"/>v!-配置事务属性->vproperty n ame="tra nsactio nAttributes">vprops><prop key="*">PROPAGATION_REQUIRED</prop></props></property>

15、;</bea n><!- 配置 DAO -><bea n id="userDaoTarget" class=".bluesky.spri ng.dao.UserDaolmpl"> <property n ame="sessio nF actory" ref="sessi onF actory" /></bea n><bea n id="userDao" pare nt="tra nsactio nBase" &

16、gt;<property n ame="target" ref="userDaoTarget" /></bea n></bea ns>第三种方式:使用拦截器<?xml versio n="1.0" en codi ng="UTF-8"?><bea ns xml ns=".spri /schema/bea ns"xml ns:xsi="./2001/XMLSchema-i nsta nee&q

17、uot;xml ns:c on text=".spri /schema/co ntext"xml ns:aop=".spri /schema/aop" xsi:schemaLocatio n=".spri /schema/bea ns.spri /schema/bea.spri /schema/co ntext.spri /schema/co.spri ngframe

18、/schema/aop .spri /schem a/aop/spri ng-aop-2.5.xsd"><bea n id="sessi onF actory"class="org.spri ngframework.orm.hiber nate3.LocalSessi onF actoryBea n"><property n ame="c on figLocatio n"value="classpath:hibernate.cfg.xml&quo

19、t; /><property n ame="co nfigurati on Class" value="org.hibernate.cfg.A nn otatio nCon figuratio n" /></bea n><!-定义事务管理器声明式的事务-><bea n id="tra nsacti onMan ager"class="org.spri ngframework.orm.hibernate3.HibernateTra nsactio nMan ager "

20、>vproperty name="sessionFactory" ref="sessionFactory" />v/bea n><bean id="transactionInterceptor"class="org.spri ngframework.tra nsactio n.i nterceptor.Tra nsactio nIn terce ptor">vproperty n ame="tra nsactio nMan ager" ref="tra n

21、sactio nMan ager"/><!-配置事务属性->vproperty n ame="tra nsactio nAttributes"><props>vprop key="*">PROPAGATION_REQUIRED</prop></props></property>v/bea n><bea nclass="org.spri ngframework.aop.framework.autoproxy.Bea nN ameAutoProxyC

22、 reator">vproperty n ame="bea nN ames"><list>vvalue>*Daov/value>v/list>v/property>vproperty n ame="i nterceptorNames">vlist>vvalue>tra nsact ionln terceptorv/value>v/list>v/property>v/bea n>v!- 配置 DAO ->vbean id="userDao&q

23、uot; class=".bluesky.spring.dao.UserDaolmpl">vproperty n ame="sessio nF actory" ref="sessi onF actory" />v/bea n>v/bea ns>第四种方式:使用tx标签配置的拦截器 v?xml versio n="1.0" en codi ng="UTF-8"?><bea ns xml ns=".spri /schema/

24、bea ns"xml ns:xsi="./2001/XMLSchema-i nsta nee"xml ns:c on text=".spri /schema/co ntext"xml ns:aop=".spri /schema/aop"xml ns:tx=".spri /schema/tx"xsi:schemaLocatio n=".spri /schema/bea

25、 ns.spri /schema/bea.spri /schema/co ntext.spri /schema/co.spri /schema/aop .spri /schem.spri /schema/tx .spri /schema/tx/spri ng-tx-2.5.xsd"><context:annotation-config /><con te

26、xt:comp onen t-sca n base-package=".bluesky" /><bea n id="sessi onF actory"class="org.spri ngframework.orm.hiber nate3.LocalSessi onF actoryBea n"><property n ame="c on figLocatio n" value="classpath:hibernate.cfg.xml" /><property n

27、 ame="co nfigurati on Class" value="org.hibernate.cfg.A nn otatio nCon figuratio n" /></bea n><!-定义事务管理器声明式的事务-><bea n id="tra nsacti onMan ager"class="org.spri ngframework.orm.hibernate3.HibernateTra nsactio nMan ager"><property n ame=

28、"sessio nF actory" ref="sessi onF actory" /></bea n><tx:advice id="txAdvice"tran sact ion-man ager="tra nsact ionMan ager"><tx:attributes><tx:method name="*" propagatio n="REQUIRED" /></tx:attributes></tx

29、:advice><aop:c on fig><aop:po in tcut id=" in terceptorPoi ntCuts"expressi on="executi on(* .bluesky.spri ng.dao.*.*(.)" /><aop:advisor advice-ref="txAdvice" poi ntcut-ref=" in terceptorPoi ntCuts" /> </aop:c on fig> v/bea ns>第五种方

30、式:全注解<?xml versio n="1.0" en codi ng="UTF-8"?><bea ns xml ns=".spri /schema/bea ns"xml ns:xsi="./2001/XMLSchema-i nsta nee"xml ns:c on text=".spri /schema/co ntext"xml ns:aop=".spri /sc

31、hema/aop"xml ns:tx=".spri /schema/tx"xsi:schemaLocatio n=".spri /schema/bea ns.spri /schema/bea.spri /schema/co ntext.spri /schema/co.spri /schema/aop .spri /schem.spri ngfram

32、/schema/tx .spri /schema /tx/spri ng-tx-2.5.xsd"><context:annotation-config /><con text:comp onen t-sca n base-package=".bluesky" /><tx:a nno tati on-drive n tran sactio n-ma nager="tra nsactio nMan ager"/><bea n id="sessi onF actory"class="org.spri ngframework.orm.hiber nate3.LocalSessi onF actoryBea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论