Control Flow Example
/* Pro Spring By Rob Harrop Jan Machacek ISBN: 1-59059-461-4 Publisher: Apress *//////////////////////////////////////////////////////////////////////////////////////// publicclass TestBean { publicvoid foo() { System.out.println("foo()"); } } /////////////////////////////////////////////////////////////////////////////////////// import java.lang.reflect.Method; import org.springframework.aop.MethodBeforeAdvice; publicclass SimpleBeforeAdvice implements MethodBeforeAdvice { publicvoid 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; publicclass ControlFlowExample { publicstaticvoid main(String[] args) { ControlFlowExample ex = new ControlFlowExample(); ex.run(); } publicvoid 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); } privatevoid test(TestBean bean) { bean.foo(); } }
ControlFlowExample.zip( 1,479 k)Related examples in the same category