实现@ Before / @使用Spring AOP发布内容

时间:2012-04-04 08:59:36

标签: spring annotations aop spring-aop

我需要拦截类型为writer.write(myObj)的所有方法,当且仅当myObj包含使用@BeforeWrite注释的方法时,才执行此方法。

我有点困惑,因为我可以拦截编写器上的方法调用,但我不知道如何提供一个切入点,看看是否有一个使用@BeforeWriter注释的方法,这看起来类似于@ PostLoad注释在JPA ...

中处理

1 个答案:

答案 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;
    }
}