Spring Java Tutorial

File: Main.java

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.aop.framework.ProxyFactory;
public class Main {
  public static void main(String[] args) throws Exception {
    MessageWriter target = new MessageWriter();
    ProxyFactory pf = new ProxyFactory();
    pf.addAdvice(new MessageDecorator());
    pf.setTarget(target);
    MessageWriter proxy = (MessageWriter) pf.getProxy();
    target.writeMessage();
    System.out.println("");
    proxy.writeMessage();
  }
}
class MessageWriter {
  public void writeMessage() {
      System.out.print("A");
  }
}
class MessageDecorator implements MethodInterceptor {
  public Object invoke(MethodInvocation invocation) throws Throwable {
      System.out.print("B ");
      Object retVal = invocation.proceed();
      System.out.println("C");
      return retVal;
  }
}