Dynamic Pointcut Example : Spring Aspect : Spring : Java examples (example source code) Organized by topic

Java
C++
PHP


Java  »  Spring   » [  Spring Aspect  ]  Screenshots 
 



Dynamic Pointcut Example

/*
Pro Spring
By Rob Harrop
Jan Machacek
ISBN: 1-59059-461-4
Publisher: Apress
*/


///////////////////////////////////////////////////////////////////////////////////////
public class SampleBean {

    public void foo(int x) {
        System.out.println("Invoked foo() with: "  +x);
    }
    
    public void bar() { 
        System.out.println("Invoked bar()");
    }
}


///////////////////////////////////////////////////////////////////////////////////////
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

public class SimpleAdvice implements MethodInterceptor {

    public Object invoke(MethodInvocation invocationthrows 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;

public class SimpleDynamicPointcut extends DynamicMethodMatcherPointcut {

    public boolean matches(Method method, Class cls) {
        System.out.println("Static check for " + method.getName());
        return ("foo".equals(method.getName()));
    }

    public boolean matches(Method method, Class cls, Object[] args) {
        System.out.println("Dynamic check for " + method.getName());

        int x = ((Integerargs[0]).intValue();

        return (x != 100);
    }

    public ClassFilter getClassFilter() {
        return new ClassFilter() {

            public boolean matches(Class cls) {
                return (cls == SampleBean.class);
            }
        };
    }
}
///////////////////////////////////////////////////////////////////////////////////////
import org.springframework.aop.Advisor;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.support.DefaultPointcutAdvisor;

public class DynamicPointcutExample {

    public static void 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();
    }
}

           
       
Download: DynamicPointcutExample.zip   ( 1,481  K )  
Related examples in the same category
1.  Profiling ExampleHas Download File
2.  Introduction Config ExampleHas Download File
3.  Security ExampleHas Download File
4.  Simple After Returning AdviceHas Download File
5.  Simple Before AdviceHas Download File
6.  Simple Throws AdviceHas Download File
7.  Composable Pointcut ExampleHas Download File
8.  Control Flow ExampleHas Download File
9.  Hello World With PointcutHas Download File
10.  Spring Aspect Introduction ExampleHas Download File
11.  Static Pointcut ExampleHas Download File
12.  Name Pointcut ExampleHas Download File
13.  Name Pointcut Using AdvisorHas Download File
14.  Proxy Factory Bean ExampleHas Download File
15.  Proxy Perf TestHas Download File
16.  Regexp Pointcut ExampleHas Download File
17.  After Advice ExampleHas Download File
18.  AspectJ Example from Pro SpringHas Download File
19.  Aspect Hello World ExampleHas Download File
























Home| Contact Us
Copyright 2003 - 04 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.