AOP 切点指定多个包

68 阅读1分钟

我使用Aspect在基于spring mvc的应用程序中记录活动。我使用@controller注释来定义应用程序中的任何控制器。我在两个不同的包中使用了两个不同的控制器, com.package1包含控制器1类,让它命名为AController
com.package2包含控制器2类,让它命名为BController

我可以通过使用

将方面应用于一个特定的控制器包

  <aop:pointcut id="pointcut1"
        expression="execution(* package1.*.*(..))"
        id="policy1" />
    <aop:aspect ref="aspect1" order="1">
        <aop:before pointcut-ref="pointcut1" method="before" arg-names="joinPoint" />
        <aop:after-returning returning="returnValue" arg-names="joinPoint, returnValue" pointcut-ref="pointcut1" method="after"  />
    </aop:aspect>
</aop:config>
<bean id="aspect1" class="com......aspectclass" />

我的问题是如何在表达式中指定多个不同的包(* package1 …(…))** 现在我正在为每个包声明一个单独的切入点,并且在一个单独的aop:before和aop:每个切入点的入口之后声明一个单独的切入点。但我认为这应该是定义多个包的切入点的理想方法。

您可以使用布尔运算符:

expression="execution(* package1.*.*(..)) || execution(* package2.*.*(..))"

如果您使用注释

@Pointcut("within(com.package1..*) || within(com.package2..*)")

原文 oomake.com/question/22…