缘起
对所有的调用做入参拦截,为了更便于查阅,希望可以得到方法的签名( MethodSignature ).
一、AOP
此时,想获取拦截的方法名称较为简单。
@Around("pointcut()")
public Object introcepter(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("拦截到了" + pjp.getSignature().getName() +"方法...");
}
二、普通方式
如果我们单独写了一个方法( methodInterceptor() ),然后在各个方法中调用。我们想得到是那些方法调用了 methodInterceptor()。
我们应该怎么做呢?
此处将答案先放在前面。
public class MethodCallUtilTest {
private void methodInterceptor() {
String className = Thread.currentThread().getStackTrace()[2].getClassName(); //调用的类
String methodName = Thread.currentThread().getStackTrace()[2].getMethodName(); //调用的方法
int lineNumber = Thread.currentThread().getStackTrace()[2].getLineNumber(); //调用的行号
System.out.println(className)