1、将业务逻辑和切面类要放到spring容器中,并且注明哪个是切面类(@Aspect);
2、切面类上的通知方法标注通知注解,告诉Spring何时何地运行(@pointcut("execution()"));
3、开启基于注解的AOP模式(@EnableAspectJAutoproxy)。
@EnableAspectJAutoproxy @Configuration public class MainConfigAop { @Bean public MathCal mathCal() { return new MathCal(); } @Bean public LogAspect logAspect() { return new LogAspect(); } }
public class MathCal { public int div(int i,int j) { System.out.println("mathCal.div"); return i/j; } }
@Aspect public class LogAspect { @pointcut("execution(public int com.yyc.bean.MathCal.*(..))") public void pointcut() { } @Before("pointcut()") public void methodStart(JoinPoint joinPoint) { Object[] args = joinPoint.getArgs(); System.out.println(joinPoint.getSignature().getName()+"除法开始。。。参数列表为{"+ Arrays.asList(args)+"}"); } @After("pointcut()") public void methodEnd(JoinPoint joinPoint) { System.out.println(joinPoint.getSignature().getName()+"除法结束。。。"); } @AfterReturning(value = "pointcut()",returning = "result") public void methodReturn(Object result) { System.out.println("除法返回。。。"+result); } @AfterThrowing(value = "pointcut()",throwing = "exception") public void methodException(Exception exception) { System.out.println("除法异常。。。"+exception); } }
div除法开始。。。参数列表为{[1,1]}
mathCal.div
div除法结束。。。
除法返回。。。1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。