我需要拦截类型为writer.write(myObj)的所有方法,当且仅当myObj包含使用@BeforeWrite注释的方法时,才执行此方法。
我有点困惑,因为我可以拦截编写器上的方法调用,但我不知道如何提供一个切入点,看看是否有一个使用@BeforeWriter注释的方法,这看起来类似于@ PostLoad注释在JPA ...
中处理答案 0 :(得分:1)
在你的拦截器处理方法中,你有ProceedingJoinPoint
类型的参数,它有方法getArgs()
。您可以检查您的参数(myObj
)方法反射并决定是否继续。示例(call
的类型为ProceedingJoinPoint
):
boolean proceed = false;
for (Method method : call.getArgs()[0].getClass().getMethods()) {
if (method.isAnnotationPresent(BeforeWriter.class)) {
proceed = true;
break;
}
}