1

我的目标是通过某种方式将我的服务类声明为事务性的。我不想将它作为 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="*"/>

任何建议会很有价值吗?

4

1 回答 1

0

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

<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>
于 2011-04-07T07:07:40.750 回答