Java/Spring/FlowPointcut

Материал из Java эксперт
Перейти к: навигация, поиск

Control FlowPointcut

   <source lang="java">

File: Main.java import java.lang.reflect.Method; import org.springframework.aop.Advisor; import org.springframework.aop.MethodBeforeAdvice; 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 Main {

 public static void main(String[] args) {
   TestBean target = new TestBean();
   Pointcut pc = new ControlFlowPointcut(Main.class, "test");
   Advisor advisor = new DefaultPointcutAdvisor(pc, new SimpleBeforeAdvice());
   ProxyFactory pf = new ProxyFactory();
   pf.setTarget(target);
   pf.addAdvisor(advisor);
   TestBean proxy = (TestBean) pf.getProxy();
   proxy.foo();
   test(proxy);
 }
 static void test(TestBean bean) {
   bean.foo();
 }

} class TestBean {

 public void foo() {
   System.out.println("foo");
 }

} class SimpleBeforeAdvice implements MethodBeforeAdvice {

 public void before(Method method, Object[] args, Object target) throws Throwable {
   System.out.println("Before method " + method);
 }

}


      </source>