AspectJ构造的AOP
import com.apress.prospring5.ch2.common.Singer; public class Guitarist implements Singer { @Override public void sing() { System.out.println("Just keep me where the light is"); } public void sing2() { System.out.println("Just keep me where the light is"); } public void rest() { System.out.println("zzz"); } } import org.springframework.aop.Advisor; import org.springframework.aop.framework.ProxyFactory; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.aop.support.JdkRegexpMethodPointcut; public class RegexpPointcutDemo { public static void main(String... args) { Guitarist johnMayer = new Guitarist(); JdkRegexpMethodPointcut pc = new JdkRegexpMethodPointcut(); pc.setPattern(".*sing.*"); Advisor advisor = new DefaultPointcutAdvisor(pc, new SimpleAdvice()); ProxyFactory pf = new ProxyFactory(); pf.setTarget(johnMayer); pf.addAdvisor(advisor); Guitarist proxy = (Guitarist) pf.getProxy(); proxy.sing(); proxy.sing2(); proxy.rest(); } }Spring自带的Pointcut
