AOP原理
AOP底层使用动态代理,分为两种情况:第一种是有接口的情况,使用JDK的动态代理。通过创建接口实现类代理对象,增强类的方法。第二种是没有接口的情况,这个时候需要使用CGLIB动态代理。此时则是创建当前类子类的代理对象,而非创建实现类的代理对象。
AOP术语
- 连接点:类中哪些方法能被增强,哪些方法就被称为连接点
- 切入点:实际真正被增强的方法被称为切入点
- 通知(增强):实际增强的逻辑的部分叫通知(增强)。通知有多种类型,包括:
(1)前置通知(@Before)
(2)后置通知(@AfterReturning)
(3)环绕通知(@Around)
(4)异常通知(@AfterThrowing)
(5)最终通知(@After) - 切面:将通知应用到切入点的过程(动作)
切入点表达式
- 作用
知道要对哪个类里面的哪个方法进行增强 - 语法结构
execution([权限修饰符] [返回类型] [类全路径] [方法名称] ([参数列表]))