- AOP概述
AOP,即面向切面编程,通过预编译方式和运行期间动态代理实现功能的同一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间耦合度降低,提高程序可重用性,同事提高了开发效率。
- AOP底层原理
AOP底层使用动态代理
有两种情况动态代理:
第一种(有接口情况):使用JDK动态代理
![](https://i-blog.csdnimg.cn/blog_migrate/73b977a275d21ed7e3cb78c603e3957c.png)
代码示例:
![](https://i-blog.csdnimg.cn/blog_migrate/d264b75f9d36ffd7a35f0b891883e23b.png)
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/17ac7a4d76279e8b2a3bd9ea378a2bfa.png)
第二种(没有接口情况):使用CGLIB动态代理
![](https://i-blog.csdnimg.cn/blog_migrate/d7b3374890542018a3936d689322f263.png)
- AOP术语
(1)连接点
类里面哪些方法可以被增强,这些方法称为连接点
(2)切入点
实际被真正增强的方法,称为切入点
(3)通知(增强)
实际增强的逻辑部分被称为通知,通知分为前置通知、后置通知、环绕通知、异常通知、最终通知
(4)切面
是动作,表示通知应用到切入点的过程
- AOP操作
Spring框架一版都是基于AspectJ实现AOP操作。(AspectJ:独立AOP框架,一般与Spring一起使用进行AOP操作)
代码示例:
![](https://i-blog.csdnimg.cn/blog_migrate/dff3afbafdce21c98f1bab753a16331f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f3f7fcdb204cea00736bcb36965b280f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bf82f5d593e9555ae7c685a3e76cd275.png)
配置切面:
![](https://i-blog.csdnimg.cn/blog_migrate/1ca27a594edeeb3ce6792d7bc1891837.png)