一、WHY
方法1、方式2、方法3拥有相同的代码段,通常我们会把相同的代码段抽成一个公共的方法,方法一、方法二、方法三显示调用公共的方法,当有新的需求加入后,再定义一个新的方法,然后修改方法一、方法二、方法三的源代码,增加调用新方法。
那么有没有一种方式,当定义一个新的方法之后,不用修改法一、方法二、方法三的源代码增加调用新方法,而系统会“自动”调用呢?
没有做不到的,只有想不到的,所以神奇的AOP就横空出世了!
二、what
1、概念
AOP(Aspect Orient Programming)——面向切面编程,也就是面向程序运行中各个步骤,希望以更好的方式来组合业务处理的各个步骤。
2、面向切面涉及的术语
①、关注点
所关注的任何东西,比如上图的验证、日志
② 、关注点分离
将问题细化为单独部分,比如上图的验证、日志
③、横切关注点
在多个模块中出现的共同的关注点,比如上图的验证、日志
④、织入
横切关注点分离后,需要通过某种技术将横切关注点融合到系统中从而完成需要的功能,因此需要织入,织入可能在编译期、加载期、运行期等进行。
⑤、连接点(Joinpoint)
程序执行过程中明确的点,如方法的调用,或者异常的抛出
⑥、增强处理(Advice)
在切入点执行横切关注点的手段
⑦、切入点
可以插入增强处理的连接点