当前位置: 首页 > 面试题库 >

在切入点中获取带注释的参数

融修平
2023-03-14
问题内容

我有两个注释,@LookAtThisMethod并且@LookAtThisParameter,如果我在方法周围有切入点,我该@LookAtThisMethod如何提取用注释的方法的参数@LookAtThisParameter

例如:

@Aspect
public class LookAdvisor {

    @Pointcut("@annotation(lookAtThisMethod)")
    public void lookAtThisMethodPointcut(LookAtThisMethod lookAtThisMethod){}

    @Around("lookAtThisMethodPointcut(lookAtThisMethod)")
    public void lookAtThisMethod(ProceedingJoinPoint joinPoint, LookAtThisMethod lookAtThisMethod) throws Throwable {
        for(Object argument : joinPoint.getArgs()) {
            //I can get the parameter values here
        }

        //I can get the method signature with:
        joinPoint.getSignature.toString();


        //How do I get which parameters  are annotated with @LookAtThisParameter?
    }

}

问题答案:

我围绕着另一个不同但相似的问题的其他答案对解决方案进行了建模。

MethodSignature signature = (MethodSignature) joinPoint.getSignature();
String methodName = signature.getMethod().getName();
Class<?>[] parameterTypes = signature.getMethod().getParameterTypes();
Annotation[][] annotations = joinPoint.getTarget().getClass().getMethod(methodName,parameterTypes).getParameterAnnotations();

我必须遍历目标类的原因是因为被注释的类是接口的实现,因此signature.getMethod().getParameterAnnotations()返回null。



 类似资料:
  • 假设我有这样一种方法: 是否有一个切入点表达式可以选择所有参数带有@CustomAnnotation注释的方法?如果是这样的话,有没有一种方法可以让我访问“value”参数?

  • 每当调用RESTendpoint时,我都需要记录。我正在尝试使用Spring AOP来做到这一点。 在其他事情中,我需要延长endpoint的名称。一、 我需要读出映射注释的值。 我想以通用的方式解决这个问题。即“给我映射的值,无论确切的映射是什么”。 所以我现在所做的基本上就是这个答案中提出的:https://stackoverflow.com/a/26945251/2995907 然后我将传递

  • 问题内容: 如果满足以下条件,则需要创建一个与方法匹配的切入点的方面: 它用MyAnnotationForMethod注释 它的参数之一(可以有多个)用@MyAnnotationForParam注释(但也可以具有其他注释)。 方面类看起来像这样 注释方法 随着日食->警告:在poincut: 使用http://download.eclipse.org/tools/ajdt/35/update中的最

  • 假设我有一个注释,如下所示: 然后在Aspect中,我怎么可能想写两个切入点,一个用于所有用@DB操作(isRead操作=true)注释的方法,一个用于@DB操作(isRead操作=false)?

  • 问题内容: 我需要 在类中使用@X注释的方法或使用@X注释的方法的切入点 。我还 需要注释对象 。如果同时注释了类和方法,则 我更喜欢将方法注释作为参数 。 我尝试了以下操作,这将创建“不一致的绑定”警告。(为什么不将它们设置为null?) 下面创建“跨’||’的参数x的模糊绑定 在切入点”警告。(我认为这并不一定有意义:为什么不绑定第一个短路评估?) 如果存在类和方法注释,则将先前的尝试自然地分

  • 我的测试框架使用selenium的PageFactory和Lambok。我想编写一个方面来捕获测试流在运行时遇到的所有web元素。 一个典型的页面看起来像: @FindBy确定测试所处理的webelement。这样的页面有50页。 当使用PageFactory实例化页面时,将实例化webElement字段(使用与@FindBy中的值对应的webElement实例进行分配)。 我希望在实例化这些we