AOP 面向切面编程
关于 AOP
面向切面编程
AOP 面向切面编程
什么是 AOP
AOP 是对 OOP(面向对象编程)的一种进一步的补充
如果在一个类或者多个类的多个业务逻辑方法中,在开始、结尾部分包含功能相同的代码。那么这些代码的位置被称之为横切关注点也叫切面,这种结构可能符合传统的面向对象编程(OOP)的封装特性,但可能导致代码难以维护和扩展。
例如:当需要为多个不具有继承关系的对象添加一个公共的方法的时候,例如日志记录、性能监控等,如果采用面向对象编程的方法,需要在每个对象里面都添加相同的方法,这样就产生了较大的重复工作量和大量的重复代码,不利于维护。
面向切面编程允许程序员将横切关注点(cross-cutting concerns)从业务逻辑中分离出来,单独在特殊的类中编写这些功能代码,而原来的业务逻辑中不再编写与之相关的代码,但依然会对业务逻辑代码产生影响。这样子就进一步减少了重复代码的出现。
为什么要使用 AOP
利用 AOP 可以对我们边缘业务进行隔离,降低无关业务逻辑耦合性。提高程序的可重用性,同时提高了开发的效率。一般用于日志记录,性能统计,安全控制,权限管理,事务处理,异常处理,资源池管理
利用 AOP 可以对我们边缘业务进行隔离,降低无关业务逻辑耦合性。提高程序的可重用性,同时提高了开发的效率。一般用于日志记录,性能统计,安全控制,权限管理,事务处理,异常处理,资源池管理
技术要点
- 通知(Advice)包含了需要用于多个应用对象的横切行为
- 连接点(Join Point)是程序执行过程中能够应用通知的所有点。
- 切点(Poincut)是定义了在 “什么地方” 进行切入,哪些连接点会得到通知。显然,切点一定是连接点。
- 切面(Aspect)是通知和切点的结合。通知和切点共同定义了切面的全部内容 —— 是什么,何时,何地完成功能。
- 引入(Introduction)允许我们向现有的类中添加新方法或者属性。
- 织入(Weaving)是把切面应用到目标对象并创建新的代理对象的过程,分为编译期织入、类加载期织入和运行期织入。
springboot 中的使用
依赖导入
1 | <dependency> |
主配置类启用
1 | /* |
Aspect
1 |
|