/* 
Pro Spring 
By Rob Harrop 
Jan Machacek 
ISBN: 1-59059-461-4 
Publisher: Apress 
*/ 
 
 
 
/////////////////////////////////////////////////////////////////////////////////////// 
 
public class NameBean { 
 
    public void foo() { 
        System.out.println("foo"); 
    } 
     
    public void foo(int x) { 
        System.out.println("foo " + x); 
    } 
     
    public void bar() { 
        System.out.println("bar"); 
    } 
     
    public void yup() { 
        System.out.println("yup"); 
    } 
} 
 
/////////////////////////////////////////////////////////////////////////////////////// 
import org.aopalliance.intercept.MethodInterceptor; 
import org.aopalliance.intercept.MethodInvocation; 
 
public class 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 org.springframework.aop.Advisor; 
import org.springframework.aop.framework.ProxyFactory; 
import org.springframework.aop.support.DefaultPointcutAdvisor; 
import org.springframework.aop.support.NameMatchMethodPointcut; 
 
public class NamePointcutExample { 
 
    public static void main(String[] args) { 
        NameBean target = new NameBean(); 
 
        // create advisor 
        NameMatchMethodPointcut pc = new NameMatchMethodPointcut(); 
        pc.addMethodName("foo"); 
        pc.addMethodName("bar"); 
        Advisor advisor = new DefaultPointcutAdvisor(pc, new SimpleAdvice()); 
         
        // create the proxy 
        ProxyFactory pf = new ProxyFactory(); 
        pf.setTarget(target); 
        pf.addAdvisor(advisor); 
        NameBean proxy = (NameBean)pf.getProxy(); 
         
        proxy.foo(); 
        proxy.foo(999); 
        proxy.bar(); 
        proxy.yup(); 
    } 
} 
 
/////////////////////////////////////////////////////////////////////////////////////// 
            
       
  |