用Spring AOP实现@Before/@Post
我需要截取writer.write(myObj)类型的所有方法,如果且仅当myObj包含一个用@beforewite注释的方法,则执行该方法用Spring AOP实现@Before/@Post,spring,annotations,aop,spring-aop,Spring,Annotations,Aop,Spring Aop,我需要截取writer.write(myObj)类型的所有方法,如果且仅当myObj包含一个用@beforewite注释的方法,则执行该方法 我有点困惑,因为我可以截获writer上的方法调用,但我不知道如何提供一个切入点,看看是否有一个用@BeforeWriter注释的方法,这看起来类似于JPA中处理@PostLoad注释的可能性…在拦截器处理方法中,您具有类型为ProceedingJoinPoint的参数,该参数具有方法getArgs()。您可以检查参数(myObj)方法反射,并决定是否继续
我有点困惑,因为我可以截获writer上的方法调用,但我不知道如何提供一个切入点,看看是否有一个用@BeforeWriter注释的方法,这看起来类似于JPA中处理@PostLoad注释的可能性…在拦截器处理方法中,您具有类型为
ProceedingJoinPoint
的参数,该参数具有方法getArgs()
。您可以检查参数(myObj
)方法反射,并决定是否继续。示例(call
类型为ProceedingJoinPoint
):
我明白,我必须循环使用这些方法来验证它是否存在。。。是吗?如果您不喜欢集合上的循环,并且更喜欢谓词方法,请尝试。
boolean proceed = false;
for (Method method : call.getArgs()[0].getClass().getMethods()) {
if (method.isAnnotationPresent(BeforeWriter.class)) {
proceed = true;
break;
}
}