概念

AOP采取横向机制,将分散在各个方法中的重复代码提取出来,然后在程序编译或运行时,再将这些提取出来的代码应用到需要执行的地方。即横向重复,纵向抽取。

实现AOP的原理

  • 动态代理 被代理对象必须要有接口。
  • cglib代理技术 可以对任何类生成代理对象,原理是对目标对象进行继承,因此目标对象不能被final修饰。 实际上Spring两种都支持,如果有借口优先使用动态代理。

AOP术语

  • joinpoint(连接点):目标对象中所有可以增强的方法。
  • pointcut(切入点):目标对象中已经增强的方法。
  • advice(通知/增强):增强的代码。
  • target(目标对象):被代理对象。
  • weaving(织入):将通知应用到连接点的过程。
  • proxy(代理):将通知织入到目标对象之后,形成代理对象。
  • aspect(切面):切入点+通知

基于XML的声明式AspectJ

请输入图片描述

切入点表达式

    execution(* com.me.aop.*.*(..))