从方法

时间:2015-10-29 01:51:05

标签: java spring spring-aop

我想在Spring-AOP中实现审计跟踪。我的问题是我需要记录从方法创建或检索的数据,但不一定是由方法返回的。现在,我在我的控制器上使用它,但这不是一成不变的,我需要将@Auditable放在其他方法中。

@AuditableEvent(auditSeverity=AuditSeverity.INFO, data=???)
@RequestMapping("/createPerson")
public void createPerson(Model model){
     ...
     toBeLogged=service.createPerson();
     ...

     return somethingElse;
}

这是注释声明

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AuditableEvent {
    AuditSeverity auditSeverity();
    Object data();
}

这是我的aop声明

@AfterReturning(value="@annotation(auditableEvent)")
public void logAuditActivity(JoinPoint jp, AuditableEvent auditableEvent){
      // save to database
}

我无法使用返回值(对于@AfterReturning),因为它可能是未来的其他内容。到目前为止,在互联网上搜索答案,只给了我选择使用反射,这不是很好甚至可能不可取。

0 个答案:

没有答案