我正在寻找一种挂钩Java方法的方法。
我读到了MethodInterceptor
,但我搞砸了试图使用它而且我不知道这是不是我正在寻找的东西。我想拦截来自java.lang.System
的函数,而不是来自加载的jar。
基本上我需要一些简单的挂钩,就像win32api样式一样(将调用重定向到我的代码然后跳回原来的函数)。
这可能吗?
答案 0 :(得分:0)
我认为AOP可能是你问题的答案。
看看Aspect Oriented Programming with Spring。在执行特定方法之前,您可能希望使用“around advice”来检查特定方法的参数。
如:
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.ProceedingJoinPoint;
@Aspect
public class AroundExample {
@Around("com.xyz.myapp.SystemArchitecture.businessService()")
public Object doParamChecking(ProceedingJoinPoint pjp, SomeType someArg, ...) throws Throwable {
if (checkParamOK(someArg, ...)) {
return pjp.proceed();
}
return SomethingOtherwise();
}
}
答案 1 :(得分:0)