春天如何使用条件连接点

在我的要求中,如果方法名称为insert或方法名称为update或方法名称为delete且方法应具有三个实参,则必须应用切入点

这是我写的代码

  <aop:config>
    <aop:aspect  ref="auditAOP">
        <aop:pointcut id="insert" expression="execution(* .IbatisDAOSupportImpl.insert(*,*,*))" />
        <aop:pointcut id="delete" expression="execution(* IbatisDAOSupportImpl.delete(*,*,*))" />
        <aop:pointcut id="update" expression="execution(* IbatisDAOSupportImpl.update(*,*,*))" />
        <aop:pointcut id="auditInsertUpdateOrDelete" expression="insert || delete || update"/>
        <aop:after method="afterInsertUpdateOrDelete" pointcut-ref="auditInsertUpdateOrDelete"/>
    </aop:aspect>

</aop:config>


下一行有问题;我收到一个错误消息,说该表达式格式不正确。

    <aop:pointcut id="auditInsertUpdateOrDelete" expression="insert || delete || update"/>

最佳答案

您需要一个复杂的切入点,该切入点在一个表达式中包含所有逻辑。您试图在表达式中引用其他切入点,但这是行不通的。

您需要执行以下操作:

<aop:config>
  <aop:aspect  ref="auditAOP">
    <aop:pointcut id="auditInsertUpdateOrDelete" expression="within(*.IbatisDAOSupportImpl)
                     and (execution( * insert*(..)) or
                     execution( * delete*(..))  or
                     execution( * update*(..)))"/>
    <aop:after method="afterInsertUpdateOrDelete" pointcut-ref="auditInsertUpdateOrDelete"/>
  </aop:aspect>
</aop:config>


这是构建复杂表达式的良好参考:
http://forum.springsource.org/showthread.php?37596-complex-pointcut-expressions

关于java - 在 Spring 使用条件连接点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8296132/

10-14 18:15