1

所以我有C类实现接口B,接口B扩展接口A。

我的 aop-config.xml:

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
      <tx:method name="*"/>
    </tx:attributes>
  </tx:advice>

  <aop:config>
    <aop:pointcut id="aMethods" expression="execution(* com.mypackage.A.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="aMethods"/>
  </aop:config>

基本上,我希望所有实现接口 A 的类的方法都在事务上下文中运行。

当切入点表达式指向接口 A 时,它似乎不起作用,但如果指向接口 B,它确实起作用。

对此有什么想法吗?

4

1 回答 1

3

您有一个切入点,用于精确匹配类型而A 不是子类型。要包含子类型,请在切入点添加 +。

<aop:pointcut id="aMethods" expression="execution(* com.mypackage.A+.*(..))"/>

有关更多信息,请参阅 AspectJ 参考指南AspectJ in Action 2nd也是我可以推荐的一本书。

于 2013-10-03T11:18:38.317 回答