Spring事务 - 将@Transactional与<tx:advice>混合到自定义注释中</tx:advice>

时间:2010-04-19 17:02:14

标签: spring-transactions

我的目标是通过某种方式将我的服务类声明为事务性的。我不想把它作为spring配置中的显式声明。很多时候,我们已经创建了新的服务,忘了宣布它们周围的交易。因此我的意图是,如果我有@TransactionalService自定义注释,它应该执行以下操作: - 1.提供交易支持 2.如Spring所示,为事务支持声明一些默认规则,如下所示。但与spring不同,我希望以下内容成为我@TransactionService注释的一部分。

<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<!-- all methods starting with 'get' are read-only -->
<tx:method name="get*" read-only="true"/>
<tx:method name="*"/>

  

任何建议都有价值吗?

1 个答案:

答案 0 :(得分:0)

当然,您可以将您的transactionnal服务放在同一个包中,而不是创建一个新的注释,然后您的切入点(只有一个用于所有您的transactionnal服务)将如下所示:

<aop:config>
  <aop:pointcut id="transactionnalServiceMethods" expression="execution(* x.y.transactionnalservice.*.*(..))"/>
  <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionnalServiceMethods"/>
</aop:config>

建议与上述相同:

  <tx:advice id="txAdvice" transaction-manager="txManager">
  <tx:attributes>
    <!-- all methods starting with 'get' are read-only -->
    <tx:method name="get*" read-only="true"/>
    <tx:method name="*"/>
  </tx:attributes>
  </tx:advice>