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