说明:使用的是tapestry5.1.0.5 和spring 2.5.6版本。以下问题仅代表我的观点,如果各位大虾有什么好的方法请跟贴告知。
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/sbfivwsll/archive/2009/07/22/4370735.aspx or http://xiaoyou.qq.com/index.php?mod=blog&act=show&u=c265e4bd629300c5bed7ab2128db58373148b98065afd40d&blogid=1248249623
今天我使用tapestry5 集成spring时,想使用事务管理。。。于是高高兴兴地进行spring 的配置:配置代理类(TransactionProxyFactoryBean),完后才发现使用不了。。。
经过查询api相关文档,最后才明白,tapestry5的注入方式与spring的注入原理不一样。最后在spring文档的帮助下找到了能使用事务的方法:
1、在spring的配置文件中引入tx与aop的命名空间:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <span style="color: #ff0000;" mce_style="color: #ff0000;">xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx</span>" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
2、配置事务规则:
<tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="get*" read-only="true" rollback-for="NoProductInStockException"/> <tx:method name="*"/> </tx:attributes> </tx:advice>
3、配置切面
<aop:config> <aop:pointcut id="fooServiceMethods" expression="execution(* x.y.service.*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="xxxServices"/> </aop:config>
OK,重新布署应用程序,就可以使用了。。。
如果对aop与tx的配置有什么不懂的,请查阅spring 文档!