Mega Code Archive

 
Categories / Java / Spring
 

Control Flow Example

/* Pro Spring By Rob Harrop Jan Machacek ISBN: 1-59059-461-4 Publisher: Apress */ /////////////////////////////////////////////////////////////////////////////////////// public class TestBean {     public void foo() {         System.out.println("foo()");     } } /////////////////////////////////////////////////////////////////////////////////////// import java.lang.reflect.Method; import org.springframework.aop.MethodBeforeAdvice; public class SimpleBeforeAdvice implements MethodBeforeAdvice {     public void before(Method method, Object[] args, Object target)             throws Throwable {         System.out.println("Before method: " + method);     } } /////////////////////////////////////////////////////////////////////////////////////// import org.springframework.aop.Advisor; import org.springframework.aop.Pointcut; import org.springframework.aop.framework.ProxyFactory; import org.springframework.aop.support.ControlFlowPointcut; import org.springframework.aop.support.DefaultPointcutAdvisor; public class ControlFlowExample {     public static void main(String[] args) {         ControlFlowExample ex = new ControlFlowExample();         ex.run();     }     public void run() {         TestBean target = new TestBean();         // create advisor         Pointcut pc = new ControlFlowPointcut(ControlFlowExample.class, "test");         Advisor advisor = new DefaultPointcutAdvisor(pc,                 new SimpleBeforeAdvice());         // create proxy         ProxyFactory pf = new ProxyFactory();         pf.setTarget(target);         pf.addAdvisor(advisor);         TestBean proxy = (TestBean) pf.getProxy();         System.out.println("Trying normal invoke");         proxy.foo();         System.out.println("Trying under ControlFlowExample.test()");         test(proxy);     }     private void test(TestBean bean) {         bean.foo();     } }                     ControlFlowExample.zip( 1,479 k)