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

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

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

错误:应用于不返回void的joinpoint

这是我的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; } 

这将照顾您的所有电话