/* 
Pro Spring 
By Rob Harrop 
Jan Machacek 
ISBN: 1-59059-461-4 
Publisher: Apress 
*/ 
 
 
 
/////////////////////////////////////////////////////////////////////////////////////// 
public class WorkerBean { 
 
    public void doSomeWork(int noOfTimes) { 
        for(int x = 0; x < noOfTimes; x++) { 
            work(); 
        } 
    } 
     
    private void work() { 
        System.out.print(""); 
    } 
} 
 
 
/////////////////////////////////////////////////////////////////////////////////////// 
 
import java.lang.reflect.Method; 
 
import org.aopalliance.intercept.MethodInterceptor; 
import org.aopalliance.intercept.MethodInvocation; 
import org.springframework.util.StopWatch; 
 
public class ProfilingInterceptor implements MethodInterceptor { 
 
    public Object invoke(MethodInvocation invocation) throws Throwable { 
        // start the stop watch 
        StopWatch sw = new StopWatch(); 
        sw.start(invocation.getMethod().getName()); 
 
        Object returnValue = invocation.proceed(); 
 
        sw.stop(); 
        dumpInfo(invocation, sw.getTotalTimeMillis()); 
        return returnValue; 
    } 
 
    private void dumpInfo(MethodInvocation invocation, long ms) { 
        Method m = invocation.getMethod(); 
        Object target = invocation.getThis(); 
        Object[] args = invocation.getArguments(); 
 
        System.out.println("Executed method: " + m.getName()); 
        System.out.println("On object of type: " + target.getClass().getName()); 
 
        System.out.println("With arguments:"); 
        for (int x = 0; x < args.length; x++) { 
            System.out.print("    > " + args[x]); 
        } 
        System.out.print("\n"); 
 
        System.out.println("Took: " + ms + " ms"); 
    } 
 
} 
/////////////////////////////////////////////////////////////////////////////////////// 
 
import org.springframework.aop.framework.ProxyFactory; 
 
public class ProfilingExample { 
 
    public static void main(String[] args) { 
        WorkerBean bean = getWorkerBean(); 
        bean.doSomeWork(10000000); 
    } 
     
    private static WorkerBean getWorkerBean() { 
        WorkerBean target = new WorkerBean(); 
         
        ProxyFactory factory = new ProxyFactory(); 
        factory.setTarget(target); 
        factory.addAdvice(new ProfilingInterceptor()); 
         
        return (WorkerBean)factory.getProxy(); 
    } 
} 
 
 
/////////////////////////////////////////////////////////////////////////////////////// 
            
       
  |