Spring Java

File: Main.java
import java.lang.reflect.Method;
import org.aopalliance.aop.Advice;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.aop.Advisor;
import org.springframework.aop.ClassFilter;
import org.springframework.aop.Pointcut;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.aop.support.StaticMethodMatcherPointcut;
public class Main {
  public static void main(String[] args) {
    BeanOne one = new BeanOne();
    BeanTwo two = new BeanTwo();
    BeanOne proxyOne;
    BeanTwo proxyTwo;
    Pointcut pc = new SimpleStaticPointcut();
    Advice advice = new SimpleAdvice();
    Advisor advisor = new DefaultPointcutAdvisor(pc, advice);
    ProxyFactory pf = new ProxyFactory();
    pf.addAdvisor(advisor);
    pf.setTarget(one);
    proxyOne = (BeanOne) pf.getProxy();
    pf = new ProxyFactory();
    pf.addAdvisor(advisor);
    pf.setTarget(two);
    proxyTwo = (BeanTwo) pf.getProxy();
    proxyOne.foo();
    proxyTwo.foo();
    proxyOne.bar();
    proxyTwo.bar();
  }
}
class BeanTwo {
  public void foo() {
    System.out.println("BeanTwo.foo");
  }
  public void bar() {
    System.out.println("BeanTwo.bar");
  }
}
class BeanOne {
  public void foo() {
    System.out.println("BeanOne.foo");
  }
  public void bar() {
    System.out.println("BeanOne.bar");
  }
}
class SimpleAdvice implements MethodInterceptor {
  public Object invoke(MethodInvocation invocation) throws Throwable {
    System.out.println("SimpleAdvice.Invoking " + invocation.getMethod().getName());
    Object retVal = invocation.proceed();
    System.out.println("SimpleAdvice.Done");
    return retVal;
  }
}
class SimpleStaticPointcut extends StaticMethodMatcherPointcut {
  public boolean matches(Method method, Class cls) {
    return ("foo".equals(method.getName()));
  }
  public ClassFilter getClassFilter() {
    return new ClassFilter() {
      public boolean matches(Class cls) {
        return (cls == BeanOne.class);
      }
    };
  }
}
           
       
Spring-ProxyFactoryAddAdvisor.zip( 4,747 k)