| |
创建一个基准MethodInterceptor |
|
File: Main.java
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.util.StopWatch;
public class Main {
public static void main(String[] args) {
Main target = new Main();
ProxyFactory factory = new ProxyFactory();
factory.setTarget(target);
factory.addAdvice(new ProfilingInterceptor());
Main bean = (Main) factory.getProxy();
bean.doSomeWork(10);
}
public void doSomeWork(int noOfTimes) {
for (int x = 0; x < noOfTimes; x++) {
}
}
}
class ProfilingInterceptor implements MethodInterceptor {
public Object invoke(MethodInvocation invocation) throws Throwable {
StopWatch sw = new StopWatch();
sw.start(invocation.getMethod().getName());
Object returnValue = invocation.proceed();
sw.stop();
System.out.println("Executed method: " + invocation.getMethod().getName());
System.out.println("On object of type: " + invocation.getThis().getClass().getName());
System.out.println("With arguments:");
for (int x = 0; x < invocation.getArguments().length; x++) {
System.out.print(invocation.getArguments()[x]);
}
return returnValue;
}
}
|
|
Spring-CreateABenchmarkwithMethodInterceptor.zip( 4,745 k) |
Related examples in the same category |
|