gpt4 book ai didi

java - 使用AOP的自定义注解传递方法参数

转载 作者:行者123 更新时间:2023-12-02 10:55:03 25 4
gpt4 key购买 nike

我已经用
定义了注释@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)

当我在我想要关注的方法下使用自定义注释时,然后我想获取方法签名的参数(它们是对象,而不是字符串,int ant字节)。

有没有简单的方法通过AOP的自定义注释获取方法参数?

最佳答案

一个简单的演示可以是:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MethodTimer {
}

以及方面处理程序:

@Aspect
@Slf4j
@Component
public class TimeCounterAspect {
@Around("@annotation(methodTimer)")
public Object logMethodRequests(ProceedingJoinPoint joinPoint, MethodTimer methodTimer)
throws Throwable {
Long start = System.currentTimeMillis();
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
String methodName = method.getName();
Object[] myArgs = joinPoint.getArgs();
Object obj = null;
try {
obj = joinPoint.proceed();
} catch (Exception e) {
throw e;
} finally {
log.info("Retrieving timeCost: {} ms in Method: {} args: {}",
System.currentTimeMillis() - start, methodName, Arrays.deepToString(myArgs));
}
return obj;
}
}

关于java - 使用AOP的自定义注解传递方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51833490/

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