gpt4 book ai didi

java - Spring AOP 可重入方面

转载 作者:行者123 更新时间:2023-12-03 20:31:10 26 4
gpt4 key购买 nike

是否可以使用 Spring AOP(或 AspectJ)创建可重入方面?

这是一个例子:

@Log
public int calcFibonacci(int n) {
if(n <= 1) {
return n;
} else {
return calcFibonacci(n - 1) + calcFibonacci(n - 2);
}
}

看点:

@Aspect
public class LoggingAspect {

@Around("@annotation(log)")
public Object measure(ProceedingJoinPoint pjp, Log log) throws Throwable {
// log some relevant information from log annotation and pjp
...
return pjp.proceed();
}

现在我想知道 calcFibonacci 被调用了多少次(计算重复调用)。

有什么办法可以做到这一点吗?

最佳答案

您需要具备以下条件:

<aop:aspectj-autoproxy expose-proxy="true"/>

和计算值的类:

@Component
public class CalcFibonacci implements CalcFibonacciInterface {

@Log
public int calcFibonacci(int n) {
if(n <= 1) {
return n;
} else {
return ((CalcFibonacciInterface) AopContext.currentProxy()).calcFibonacci(n - 1)
+ ((CalcFibonacciInterface) AopContext.currentProxy()).calcFibonacci(n - 2);
}
}
}

相关文档部分是here .

关于java - Spring AOP 可重入方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24325015/

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