我使用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..*)")