Spring service继承的事务配置(注解)

DirectoryService继承BusinessService,BusinessService有个save方法,调用DirectoryService执行save方法,需要在BusinessService上也加上@Component,让BusinessService也给spring容器管理,然后给BusinessService的save方法加上事务配置,否则调用DirectoryService.save不会有事务,出现异常不会回滚。

如果DirectoryService没有重写save方法,DirectoryService.save使用的事务是BusinessService上的事务,也就是说DirectoryService可以不用配置以下这句话:

<tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/>

如果DirectoryService没有自己的方法,甚至可以不用配置事务,下面的配置去掉都可以(为了分的细一点,方便管理,我给每个service单独配置事务):

<tx:advice id="siteDirectoryTxAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="siteDirectoryServicePointcut" expression="execution(* com.lmiky.cms.site.service.*.*(..))" /> <aop:advisor pointcut-ref="siteDirectoryServicePointcut" advice-ref="siteDirectoryTxAdvice" /> </aop:config>

 

你可能感兴趣的:(spring,service)