2010-12-14 9 views
2

Gibt es eine Möglichkeit, Java zu erklären, bestimmte Funktionen zu verfolgen, indem Sie sie mit einer Anmerkung markieren? Ich möchte diese in der Lage sein zu tun:Tracing-Ausführung mit Anmerkungen

class Foo { 

    @trace 
    int foo(int bar) { 
     return bar + 5; 
    } 
} 

Wenn dann Ablaufverfolgung aktiviert ist, erhalte ich:

** Eingabe foo (5)

** foo Rückkehr: 10

Antwort

1

können Sie diese mit Feder aop zu tun, mit @Around Anmerkungen

wie ich mplement AOP Protokollierung:

fügen Sie diese applicationContext.xml

<aop:aspectj-autoproxy/> 
    <context:annotation-config/> 
    <context:component-scan base-package="com.company.*"/> 

die folgende Klasse in com.company erstellen * Paket:.

package com.company.*; 

import org.apache.log4j.Logger; 
import org.aspectj.lang.ProceedingJoinPoint; 
import org.aspectj.lang.annotation.Around; 
import org.aspectj.lang.annotation.Aspect; 
import org.springframework.stereotype.Component; 
import org.springframework.util.StopWatch; 

@Component 
@Aspect 
public class AOPMethodLogger { 

    @Around("bean(*Service)") 
    public Object timeMethod(ProceedingJoinPoint joinPoint) throws Throwable { 
     StopWatch stopWatch = new StopWatch(); 
     stopWatch.start(); 
     Object retVal = joinPoint.proceed(); 
     stopWatch.stop(); 
     if(stopWatch.getTotalTimeMillis() > 35){ 
      StringBuffer logMessageStringBuffer = new StringBuffer(); 
      logMessageStringBuffer.append(joinPoint.getTarget().getClass().getName()); 
      logMessageStringBuffer.append("."); 
      logMessageStringBuffer.append(joinPoint.getSignature().getName()); 
      logMessageStringBuffer.append("("); 
      logMessageStringBuffer.append(joinPoint.getArgs()); 
      logMessageStringBuffer.append(")"); 
      logMessageStringBuffer.append(" execution time: "); 
      logMessageStringBuffer.append(stopWatch.getTotalTimeMillis()); 
      logMessageStringBuffer.append(" ms"); 
      System.out.println(logMessageStringBuffer.toString()); 
     } 
     return retVal; 
    } 

} 
1

Sie können dies tun, ohne Anmerkungen hinzufügen, die von mit einem Werkzeug namens InTrace.

HINWEIS: InTrace ist ein kostenloses und Open-Source-Tool, das ich geschrieben habe.