2

我们如何在春季使用条件连接点

在我的要求中,如果方法名称是 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"/>
4

1 回答 1

1

您需要一个复杂的切入点,其中包含单个表达式中的所有逻辑。你试图在你的表达式中引用你的其他切入点,这不起作用。

你需要做这样的事情:

<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

于 2011-11-28T15:33:47.937 回答