在aspectj中,我们可以将多个切入点映射到单个建议吗?
例如下面是两个单独的切入点
@Pointcut("execution(* xyz.get(..))")
void pointcut1() {
}
@Pointcut("execution(* abc.put(..))")
void pointcut2() {
}
所以任何人都可以知道如何在一个建议上配置这两个切入点?
因为单点切入单一建议,如下所示
@Before("pointcut1()")
public void beforeLogging() {
System.out.println("Before Methods");
}
如何为多个切入点配置相同的建议?
答案 0 :(得分:0)
您可以使用||运营商。 来自文档http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/aop.html(9.2.2声明方面):
@Pointcut("execution(public * (..))")
private void anyPublicOperation() {}
@Pointcut("within(com.xyz.someapp.trading..)")
private void inTrading() {}
@Pointcut("anyPublicOperation() || inTrading()")
private void tradingOperation() {}
答案 1 :(得分:0)
是的,您可以将切入点与逻辑AND(&&
)以及逻辑OR(||
)运算符组合使用,或者通过逻辑NOT(!
)对它们进行否定。
你可能想要的是这个:
@Before("pointcut1() || pointcut2()")
OR在这里有意义,因为在你的例子中,逻辑AND总是会导致一个空集:一个方法不能同时在两个包中,而是在其中一个包中。