- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Spring声明式事务配置管理方法
/*2011年8月28日 10:03:30 by Rush */
环境配置
项目使用SSH架构,现在要添加Spring事务管理功能,针对当前环境,只需要添加Spring 2.0 AOP类库即可。添加方法:
? 点击项目右键-Build Path-Add librarys:
? 打开Add Libraries对话框,然后选定 MyEclipse Libraries:
? 点击Next,找到Spring 2.0 aop Libraries并勾选上,点击finsh即可。
? 如果在项目里面能看到下面的库文件,说明已经安装成功。
事务配置
? 首先在/WEB-INF/applicationContext.xml添加以下内容:
!-- 配置事务管理器 --
bean id=transactionManager class=org.springframework.orm.hibernate3.HibernateTransactionManager
property name=sessionFactory
ref bean=mySessionFactory/
/property
/bean
注:这是作为公共使用的事务管理器Bean。这个会是事先配置好的,不需各个模块各自去配。
? 下面就开始配置各个模块所必须的部分,在各自的applicationContext-XXX-beans.xml配置的对于事务管理的详细信息。
首先就是配置事务的传播特性,如下:
!-- 配置事务传播特性 --
tx:advice id=TestAdvice transaction-manager=transactionManager
tx:attributes
tx:method name=save* propagation=REQUIRED/
tx:method name=del* propagation=REQUIRED/
tx:method name=update* propagation=REQUIRED/
tx:method name=add* propagation=REQUIRED/
tx:method name=find* propagation=REQUIRED/
tx:method name=get* propagation=REQUIRED/
tx:method name=apply* propagation=REQUIRED/
/tx:attributes
/tx:advice
!-- 配置参与事务的类 --
aop:config
aop:pointcut id=allTestServiceMethod expression=execution(* com.test.testAda.test.model.service.*.*(..))/
aop:advisor pointcut-ref=allTestServiceMethod advice-ref=TestAdvice /
/aop:config
需要注意的地方:
(1) advice(建议)的命名:由于每个模块都会有自己的Advice,所以在命名上需要作出规范,初步的构想就是模块名+Advice(只是一种命名规范)。
(2) tx:attribute标签所配置的是作为事务的方法的命名类型。
如tx:method name=save* propagation=REQUIRED/
其中*为通配符,即代表以save为开头的所有方法,即表示符合此命名规则的方法作为一个事务。
propagation=REQUIRED代表支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
(3) aop:pointcut标签配置参与事务的类,由于是在Service中进行数据库业务操作,配的应该是包含那些作为事务的方法的Service类。
首先应该特别注意的是id的命名,同样由于每个模块都有自己事务切面,所以我觉得初步的命名规则因为 all+模块名+ServiceMethod。而且每个模块之间不同之处还在于以下一句:
expression=execution(* com.test.testAda.test.model.service.*.*(..))
其中第一个*代表返回值,第二*代表service下子包,第三个*代表方法名,“(..)”代表方法参数。
(4) aop:advisor标签就是把上面我们所配置的事务管理两部分属性整合起来作为整个事务管理。
图解:
下面附上配置声明式事务的一些相关的资料,以下资料均来源于互联网:
附一、Spr
文档评论(0)