gpt4 book ai didi

java - Aspectj @Around 切入Java中的所有方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:08:09 25 4
gpt4 key购买 nike

我正在编写一个简单的计时器方面来检测属于我的项目的所有包中的所有方法。但是,这些类中各种方法的返回类型不同,我得到以下错误:

它只适用于 setter 但不适用于 getter ...

Error: applying to joinpoint that doesn't return void

这是我的timeraspect...

@Around("execution(* com.myproject..*(..))")
public void log(ProceedingJoinPoint pjp) throws Throwable{


LOG.info("TimerAspect");
String name = pjp.getSignature().getName();
Monitor mon = MonitorFactory.start(name);
pjp.proceed();
mon.stop();

LOG.info("TimerAspect Mon" + mon);

String printStr = mon.getLabel()+","+mon.getUnits()+","+mon.getLastValue()+","+mon.getHits()+","+mon.getAvg()+","+mon.getTotal()+","+mon.getMin()+","+mon.getMax()+","+mon.getFirstAccess()+","+mon.getLastAccess();

File f = new File("target/stats.csv");
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(f, true));
bufferedWriter.write(printStr);
bufferedWriter.newLine();
bufferedWriter.flush();
bufferedWriter.close();


}

非常感谢任何解决此问题的线索。

谢谢

最佳答案

您应该从建议调用中捕获输出,并按照以下行从周围建议中返回:

@Around("execution(* com.myproject..*(..))")
public Object log(ProceedingJoinPoint pjp) throws Throwable{

....
Object result = pjp.proceed();
......
return result;
}

这将处理你所有的电话

关于java - Aspectj @Around 切入Java中的所有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270459/

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