SpringAOP

spring aop

Aspect:
切面:
举个形象的例子,就像我们在高速上卡车,沿着笔直的线路在走,入口处我们要
经过一个收费站横着将我们的道路挡住,出口处也有一个收费站横着将我们的道路挡住,
在入口处我们要交费,否则不允许进入,在出口处我们也要交费否则不允许出去,那么
这两个收费站就是我们的切面。就像我们的程序执行一样,在一条线上走的时候,中间就会
切入各种的业务,我们称这样的业务为切面。
那么切面就是一个业务类,在我们执行一个事务时,它会切入进来或者前面或者后面或者出现某种异常

Advice:
定义我们在何时切入,还是举走高速的例子:
当我们驾车时,从北京上高速,那么北京交通局就会考虑在车辆进入的时候收费,
到达河北后,我们要出高速,那么河北交通局就会考虑在车里出去的时候收费,当我们走到途中
感觉车上油不多了,那么加油站就会切入。就像我们的程序,当我调用Action时,我可以在其进入
之前就切入,执行一些逻辑,当我们调用service方式时,我们可以在其进入之前进行切入,当然在
这个过程中,如果我们发生了异常,那么异常处理的Ascpet就可以切入。
总的来说我们包括三方面的切入,
1、在之前切入
2、在之后切入
3、在出现异常时切入
在Spring的Advice方式中只支持方法上的切入。

Pointcut
定义我们在那些规则上切入,还是走高速的例子:
1、我们可以对所有军车不收费进高速
2、对普通车收费进高速
3、对所有车收费进高速
换成我们的程序就是,例如我们可以只对,添加的方法切入一些Aspect
也可以对所有的方法切入Aspect。

Weave
这个单词叫织入,其实上面所说的切入就是织入

JoinPoint
定义我们的织入点,还是高速:
高速上所有运行的车都有可能成为织入点,只要他们满足我们的


Pointcut定义规则,放到我们程序中就是一个个的方法,具体的方法。

如下图所示:

SpringAOP