我的目标是通过某种方式将我的服务类声明为事务性的。我不想把它作为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="*"/>
任何建议都有价值吗?
答案 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>