2

春に条件付き結合ポイントを使用する方法

私の要件では、メソッド名がinsertの場合、またはメソッド名がupdateの場合、またはメソッド名がdeleteの場合、およびメソッドに正確に3つの引数が必要な場合、ポイントカットを適用する 必要があります

これは私が書いたコードでした、

  <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 に答える