而不是 using @Before
,您可能必须使用@Around
that 允许您使用ProceedingJoinPoint
来获取源位置。
@Around(" ..... ")
public void test(ProceedingJoinPoint pjp) throws Throwable {
SourceLocation sl = pjp.getSourceLocation();
System.out.println(sl.getFileName());
System.out.println(sl.getLine());
System.out.println(sl.getWithinType());
// allow through
pjp.proceed();
}
在您的情况下,听起来您可能需要call
,execution
但似乎call
在 Spring AOP 中不受支持:-
其他切入点类型
完整的 AspectJ 切入点语言支持 Spring 中不支持的其他切入点指示符。它们是:call、initialization、preinitialization、staticinitialization、get、set、handler、adviceexecution、withincode、cflow、cflowbelow、if、@this 和 @withincode。在 Spring AOP 解释的切入点表达式中使用这些切入点指示符将导致抛出 IllegalArgumentException。