2012-06-30 15 views
9

मैं अपने प्रोजेक्ट से जुड़े सभी पैकेजों में सभी विधियों को मापने के लिए एक साधारण टाइमर पहलू लिख रहा हूं।Aspectj @ आसपास के पॉइंटकट जावा में सभी विधियों

यह केवल सेटर के लिए काम करता है लेकिन गेटर के लिए नहीं ...

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(); 


} 

कोई सुराग को हल करने के लिए इस बहुत सराहना कर रहा है।

धन्यवाद

उत्तर

20

आप अपने सलाह कॉल से आउटपुट को कैप्चर और वापसी है कि अपने से सलाह के आसपास इन पंक्तियों के साथ करना चाहिए:

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

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

यह आपके सभी कॉल्स

का ख्याल रखेंगे
संबंधित मुद्दे