File: Main.java
import java.lang.reflect.Method; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.springframework.aop.Advisor; import org.springframework.aop.ClassFilter; import org.springframework.aop.framework.ProxyFactory; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.aop.support.DynamicMethodMatcherPointcut; public class Main { public static void main(String[] args) { MyClass target = new MyClass(); Advisor advisor = new DefaultPointcutAdvisor(new SimpleDynamicPointcut(), new SimpleAdvice()); ProxyFactory pf = new ProxyFactory(); pf.setTarget(target); pf.addAdvisor(advisor); MyClass proxy = (MyClass) pf.getProxy(); proxy.foo(1); proxy.bar(); } } class MyClass { public void foo(int x) { System.out.println("MyClass.foo() : " + x); } public void bar() { System.out.println("MyClass.bar()"); } } class SimpleAdvice implements MethodInterceptor { public Object invoke(MethodInvocation invocation) throws Throwable { System.out.println("SimpleAdivce.Invoking " + invocation.getMethod().getName()); Object retVal = invocation.proceed(); System.out.println("SimpleAdvice.Done"); return retVal; } } class SimpleDynamicPointcut extends DynamicMethodMatcherPointcut { public boolean matches(Method method, Class cls) { return ("foo".equals(method.getName())); } public boolean matches(Method method, Class cls, Object[] args) { int x = (Integer) args[0]; return (x != 100); } public ClassFilter getClassFilter() { return new ClassFilter() { public boolean matches(Class cls) { return (cls == MyClass.class); } }; } }
28.55.MethodInterceptor | ||||
28.55.1. | Create A Benchmark with MethodInterceptor | ![]() | ||
28.55.2. | Check Invoked Method In MethodInterceptor | ![]() | ||
28.55.3. | Implements MethodInterceptor To Create Profiling Advice | ![]() | ||
28.55.4. | Implements MethodInterceptor | ![]() |