Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Spring AOP实现@Before/@Post_Spring_Annotations_Aop_Spring Aop - Fatal编程技术网

用Spring AOP实现@Before/@Post

用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.write(myObj)类型的所有方法,如果且仅当myObj包含一个用@beforewite注释的方法,则执行该方法


我有点困惑,因为我可以截获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;
    }
}