简介
1、概念
AOP:Aspect-Oriented Programming 面向切面编程,是OOP面向对象编程的一种补充。
将程序宗交叉业务逻辑(事物、日志)代码提取出来,封装成切面,有AOP容器在适当时机(代码位置)将封装的切面动态的织入到具体业务逻辑中。
AOP不是Spring特有的,C++等也有。
2、应用场合
适用于具有横切逻辑的场合,如事物管理、日志管理、性能检测、异常通知、访问控制等。
3、作用
1)不改变原有代码的基础上动态添加新的功能。
2)模块化
4、术语
连接点Joinpoint :
程序执行的某个特定的位置,如方法调用前、方法调用后、方法抛出异常时、方法调用前后等。
切入点:
定位查找到需要的连接点,即切入点。一个切入点可包含多个连接点。
增强 Advice :
在切点上执行的一段程序代码,用来实现某些功能。
目标对象 target:
将执行增强处理的目标类。
织入 weaving:
将增强添加到目标类具体切入点上的过程。
代理 proxy:
一个类被织入增强之后,会产生代理类。
切面 aspect:
切点和增强的组合就叫做切面。
引介 Introduction 也称为引入:
可以为一个类添加一些属性和方法,但是一般不建议使用。
重点理解切入点、增强、目标对象 的概念
实现原理
1、代理模式
概念:为其他对象提供一种代理,以控制对这个对象的访问,起到中介的作用。
通过代理对象访问目标对象,可以增强额外的操作,扩展目标对象的功能。
分类:
静态代理
代理类是程序员自己创建,或者工具生成的。
所谓的静态就是程序运行之前就已经存在代理类的字节码文件。
动态代理
代理类是程序在运行期间由JVM虚拟机根据反射等机制动态生成的,自动生成代理类和代理对象。
所谓动态就是指程序运行之前不存在代理类的字节码文件。
来源:CSDN
作者:0店小二
链接:https://blog.csdn.net/ljb825802164/article/details/104528089