public static void main(String[] args) { BeanOne one = new BeanOne(); BeanTwo two = new BeanTwo();
BeanOne proxyOne; BeanTwo proxyTwo;
//pointcut, advice, advisor 생성 Pointcut pc = new SimpleStaticPointcut(); Advice advice = new SimpleAdvice(); Advisor advisor = new DefaultPointcutAdvisor(pc, advice);
//BeanOne proxy 생성 ProxyFactory pf = new ProxyFactory(); pf.addAdvisor(advisor); pf.setTarget(one); proxyOne = (BeanOne)pf.getProxy();
//BeanTwo proxy 생성 pf = new ProxyFactory(); pf.addAdvisor(advisor); pf.setTarget(two); proxyTwo = (BeanTwo)pf.getProxy();
proxyOne.foo(); proxyTwo.foo();
proxyOne.bar(); proxyTwo.bar(); }
}
실행결과
붉은색 클래스와 메소드가 일치해서 advice 적용 파란색 클래스와 메소드가 일치하지 않아서 advice가 적용이 안됨 >> Invoking foo foo >> Done foo bar bar