gpt4 book ai didi

java - 在切入点内获取带注释的参数

转载 作者:IT老高 更新时间:2023-10-28 20:39:18 26 4
gpt4 key购买 nike

我有两个注解 @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?
}

}

最佳答案

我围绕这个 other answer 建模了我的解决方案一个不同但相似的问题。

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

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

关于java - 在切入点内获取带注释的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com