AOP(面向切面编程)
Aspect(切面):关注点的模块化。封装了advise和pointcut
JointPoint(连接点):程序执行过程中某个特定的点。例如调用方法的执行,异常的处理等
PointCut(切入点):定义了连接点的集合以及以及他们的值。
JointPoint 就好像一段程序代码,而PointCut 就是某条语句的断点。记录了程序处在该状态下堆栈的值。
Advise(通知):程序运行到某个连接点时,额外做的的事情。例如记录日志,事务操作等。
通知类型:
前置通知(Before advice):某个连接点执行之前的通知。
返回后通知(After returning advice): 在某连接点(join point)正常完成后执行的通知:
抛出异常后通知(After throwing advice): 在方法抛出异常退出时执行的通知。
后通知(After (finally) advice): 当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。
环绕通知(Around Advice): 包围一个连接点(join point)的通知,如方法调用。这是最强大的一种通知类 型。 环绕通知可以在方法调用前后完成自定义的行为。它也会选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来结束执行。
Introduction(引入):(也被称为内部类型声明(inter-type declaration)),声明额外的方法或字段。
spring引入任何一个借口(以及一个对应的实现)到被代理的对象。
目标对象(Target Object):被切面所通知的对象。即调用方法执行的对象。
AOP代理(AOP Proxy):spring中大多采用动态代理机制实现。主要是俩种代理模式:
兄弟模式:JKD动态代理-采用接口的方式,
父子模式:CGLIB代理 -采用继承的方式。
织入(Weaving):把切面连接到一个应用上,并 创建一个被通知对象