AOP:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP(面向对象编程)的延续
AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码
经典应用:事务管理、性能监视、安全检查、缓存 、日志等
AOP实现原理
- aop底层将采用代理机制进行实现。
- 接口 + 实现类 :spring采用 jdk 的动态代理Proxy。
- 实现类:spring 采用 cglib字节码增强。
核心知识点
1.target:目标类,需要被代理的类。
2.Joinpoint(连接点):所谓连接点是指那些可能被拦截到的方法。
3.PointCut 切入点:已经被增强的连接点。
4.advice 通知/增强,增强代码。
5.Weaving(织入):是指把增强advice应用到目标对象target来创建新的代理对象proxy的过程.
6.proxy 代理类
- Aspect(切面): 是切入点pointcut和通知advice的结合
一个线是一个特殊的面。
一个切入点和一个通知,组成成一个特殊的面。
通过Joinpoint.getSignature();获取拦截到的方法签名MethodSignature
MethodSignature.getMethod() 找到对应执行方法
如需使用注解@aspect 必须在xml中进行配置
<aop:aspectj-autoproxy />