配置事务:
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="deleteCustomer" />
<tx:method name="saveCustomer" timeout="2"
no-rollback-for="ArithmeticException" propagation="REQUIRES_NEW"/>
tx:attributes>
tx:advice>
切面的声明:
<aop:config>
<aop:pointcut id="fooServiceOperation"
expression="execution(* springTransaction.service.FooService.*(..))" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="fooServiceOperation" order=""/>
<aop:aspect ref="aspectJ">
<aop:around method="AroundProceeding" pointcut-ref="around" />
<aop:after-throwing method="afterThrowing"
pointcut-ref="throw" throwing="ex"/>
<aop:pointcut id="around"
expression="target(springTransaction.service.FooService)" />
<aop:pointcut id="throw"
expression="execution(public * *(..))" />
aop:aspect>
aop:config>
在测试类中,同时插入两条相同的信息之后,数据库会有错误抛出,程序会捕捉这种错误并且记录在文件当中
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7528999/viewspace-274654/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7528999/viewspace-274654/