Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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/4/macos/8.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
Java 从方法内部获取注释属性值_Java_Spring_Spring Aop - Fatal编程技术网

Java 从方法内部获取注释属性值

Java 从方法内部获取注释属性值,java,spring,spring-aop,Java,Spring,Spring Aop,我想在SpringAOP中实现审计跟踪。我的问题是,我需要记录从该方法创建或检索的数据,但不一定由该方法返回。现在,我正在我的控制器上使用它,但这不是一成不变的,我需要在其他方法中使用@Auditable @AuditableEvent(auditSeverity=AuditSeverity.INFO, data=???) @RequestMapping("/createPerson") public void createPerson(Model model){ ... t

我想在SpringAOP中实现审计跟踪。我的问题是,我需要记录从该方法创建或检索的数据,但不一定由该方法返回。现在,我正在我的控制器上使用它,但这不是一成不变的,我需要在其他方法中使用@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();
}
@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还是直接。反射不允许你查看方法在做什么。