Spring AOP Pointcut

tech2026-09-23  1

import org.springframework.aop.Advisor; import org.springframework.aop.aspectj.AspectJExpressionPointcut; import org.springframework.aop.framework.ProxyFactory; import org.springframework.aop.support.DefaultPointcutAdvisor; public class AspectjexpPointcutDemo { public static void main(String... args) { Guitarist johnMayer = new Guitarist(); AspectJExpressionPointcut pc = new AspectJExpressionPointcut(); pc.setExpression("execution(* 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(); } }

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

最新回复(0)