Dynamic Pointcut Example : Spring Aspect « Spring « Java






Dynamic Pointcut Example

/* Pro Spring By Rob Harrop Jan Machacek ISBN: 1-59059-461-4 Publisher: Apress *//////////////////////////////////////////////////////////////////////////////////////// publicclass SampleBean { publicvoid foo(int x) { System.out.println("Invoked foo() with: " +x); } publicvoid bar() { System.out.println("Invoked bar()"); } } /////////////////////////////////////////////////////////////////////////////////////// import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; publicclass SimpleAdvice implements MethodInterceptor { public Object invoke(MethodInvocation invocation) throws Throwable { System.out.println(">> Invoking " + invocation.getMethod().getName()); Object retVal = invocation.proceed(); System.out.println(">> Done"); return retVal; } } /////////////////////////////////////////////////////////////////////////////////////// import java.lang.reflect.Method; import org.springframework.aop.ClassFilter; import org.springframework.aop.support.DynamicMethodMatcherPointcut; publicclass SimpleDynamicPointcut extends DynamicMethodMatcherPointcut { publicboolean matches(Method method, Class cls) { System.out.println("Static check for " + method.getName()); return ("foo".equals(method.getName())); } publicboolean matches(Method method, Class cls, Object[] args) { System.out.println("Dynamic check for " + method.getName()); int x = ((Integer) args[0]).intValue(); return (x != 100); } public ClassFilter getClassFilter() { returnnew ClassFilter() { publicboolean matches(Class cls) { return (cls == SampleBean.class); } }; } } /////////////////////////////////////////////////////////////////////////////////////// import org.springframework.aop.Advisor; import org.springframework.aop.framework.ProxyFactory; import org.springframework.aop.support.DefaultPointcutAdvisor; publicclass DynamicPointcutExample { publicstaticvoid main(String[] args) { SampleBean target = new SampleBean(); // create advisor  Advisor advisor = new DefaultPointcutAdvisor( new SimpleDynamicPointcut(), new SimpleAdvice()); // create proxy  ProxyFactory pf = new ProxyFactory(); pf.setTarget(target); pf.addAdvisor(advisor); SampleBean proxy = (SampleBean)pf.getProxy(); proxy.foo(1); proxy.foo(10); proxy.foo(100); proxy.bar(); proxy.bar(); proxy.bar(); } } 








DynamicPointcutExample.zip( 1,481 k)

Related examples in the same category

1.Profiling Example
2.Introduction Config Example
3.Security Example
4.Simple After Returning Advice
5.Simple Before Advice
6.Simple Throws Advice
7.Composable Pointcut Example
8.Control Flow Example
9.Hello World With Pointcut
10.Spring Aspect Introduction Example
11.Static Pointcut Example
12.Name Pointcut Example
13.Name Pointcut Using Advisor
14.Proxy Factory Bean Example
15.Proxy Perf Test
16.Regexp Pointcut Example
17.After Advice Example
18.AspectJ Example from Pro Spring
19.Aspect Hello World Example
close