| 
 /*
 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();
 }
 }
 
 
 ///////////////////////////////////////////////////////////////////////////////////////
 
 
 |