【发布时间】:2015-02-03 05:58:49
【问题描述】:
我在scala 中使用aspectj 中的aop。我有一个方法
def delete(@Id id:Long, name:String)
如何在我的方面文件中获取id 的值。
@Around("execution (* com.myapp.Employee.delete(..))")
def message(joinPoint: ProceedingJoinPoint): Object = {
val methodSignature =joinPoint.getSignature.asInstanceOf[MethodSignature]
//get the value of the field id
joinPoint.proceed
}
我无法获取值。
如果我尝试
val res = methodSignature.getMethod.getParameterAnnotations
res.map(annotations => println("size = "+annotations.length))
总是打印大小为0。
编辑:
现在我得到了正确的尺寸。该方法位于object。但我认为java反射读取object存在一些问题。我更改为class,现在可以获取注释。但是如何获取带有该注解的参数呢?
【问题讨论】:
-
首先存在不一致,因为在问题代码中,该函数被命名为
delete,但切入点在deleteEmployee附近。 -
@cchantep 抱歉,我的错误,复制粘贴时出现问题。我现在改了。但是,我仍然没有得到正确的名称和值。
-
我建议尝试使用 vanilla Java 普通类,以检查问题是否与 Scala 代码有关。
-
@cchantep : 我的主要问题是我不知道如何根据注释获取参数名称和值
-
我认为您无法获取名称或参数,只能获取参数列表及其在其中的位置。
标签: java scala reflection annotations aspectj