发布时间:2022-09-05 02:30
目录
1. 面向切面编程
2. AOP核心概念
3. AOP的实现
4. Spring 对AOP支持
4.1 支持@Aspect
4.2 声明一个切面
4.3 声明一个切入点
4.4 声明增强
5. 用AOP实现日志拦截
5.1 一般的实现
5.2 仅拦截需要的方法
5.3 requestId传递
5.4 关于增强执行的顺序
6. 思考
参考
定义:面向切面编程(AOP,Aspect Oriented Programming)是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
作用:利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
主要功能:日志记录、性能统计、安全控制、事务处理、异常处理等。
总结:面向切面编程是希望能够将通用需求功能从不相关的类当中分离出来,能够使得很多类共享一个行为,一旦发生变化,不必修改很多类,而只是修改这个行为即可。
AOP通过提供另一种思考程序结构的方式来补充了面向对象编程(OOP)。OOP中模块化的基本单元是类(class),而AOP中模块化的基本单元是切面(aspect)。可以这么理解,OOP是解决了纵向的代码复用问题,AOP是解决了横向的代码复用问题。
Spring的关键组件之一是AOP框架。虽然Spring IOC容器不依赖于AOP,意味着如果你不想使用AOP,则可以不使用AOP,但AOP补充了Spring IOC以提供一个非常强大的中间件解决方案。