我想在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),因为它可能是未来的其他内容。到目前为止,在互联网上搜索答案,只给了我选择使用反射,这不是很好甚至可能不可取。