Java 从方法内部获取注释属性值
我想在SpringAOP中实现审计跟踪。我的问题是,我需要记录从该方法创建或检索的数据,但不一定由该方法返回。现在,我正在我的控制器上使用它,但这不是一成不变的,我需要在其他方法中使用@AuditableJava 从方法内部获取注释属性值,java,spring,spring-aop,Java,Spring,Spring Aop,我想在SpringAOP中实现审计跟踪。我的问题是,我需要记录从该方法创建或检索的数据,但不一定由该方法返回。现在,我正在我的控制器上使用它,但这不是一成不变的,我需要在其他方法中使用@Auditable @AuditableEvent(auditSeverity=AuditSeverity.INFO, data=???) @RequestMapping("/createPerson") public void createPerson(Model model){ ... t
@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();
}
@AfterReturning(value="@annotation(auditableEvent)")
public void logAuditActivity(JoinPoint jp, AuditableEvent auditableEvent){
// save to database
}
这是我的aop声明
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AuditableEvent {
AuditSeverity auditSeverity();
Object data();
}
@AfterReturning(value="@annotation(auditableEvent)")
public void logAuditActivity(JoinPoint jp, AuditableEvent auditableEvent){
// save to database
}
我不能使用@AfterReturning的返回值,因为它可能是将来的其他内容。到目前为止,在互联网上搜索答案,只给了我使用反射的选择,这并不漂亮,甚至可能不可取 我不理解这个问题,也不理解你发布的代码。请澄清。你不明白什么部分?我做了一些编辑。你说我不能使用@AfterReturning的返回值是什么意思,因为它将来可能是其他东西?如果你使用注释,反射是你唯一的选择,无论是通过Spring AOP还是直接。反射不允许你查看方法在做什么。