以下是比较专业的术语。
- Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在Spring中,这些点指的是方法,因为Spring只支持方法类型的连接点。
- Pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义。
- Advice(通知/增强):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知。通知分为前置通知、后置通知、异常通知、最终通知和环绕通知(切面要完成的功能)。
- Aspect(切面):是切入点和通知的结合。
- Target(目标对象):代理的目标对象(要增强的类)
- Weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程。Spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入。
- Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类。
- Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下,Introduction可以在运行期为类动态地添加一些方法或Field。
例如有如下一个类:
public class User {
public void add() {
}
public void update() {
}
public void delete() {
}
}
下面是用比较通俗易懂的话来阐述AOP开发中的常见的相关术语:
- 连接点:在User类里面有3个方法,这3个方法都可以被增强,类里面的哪些方法可以被增强,这些方法就可被成为连接点。
- 切入点:在一个类中可以有很多的方法被增强,在实际操作中,如若只增强了类里面的add方法,则实际增强的方法被称为切入点。
增强/通知:比如增强User类里面的add方法,在add方法中添加了日志功能,这个日志功能就称为增强。
通知类型:- 前置通知:在增强的方法执行之前进行操作。
- 后置通知:在增强的方法执行之后进行操作。
- 环绕通知:在增强的方法执行之前和执行之后进行操作。
- 最终通知:增强了两个方法,执行第一个方法,执行第二个方法,在第二个方法执行之后进行操作。
也可理解为后置通知后面执行的通知或者无论目标方法是否出现异常,最终通知都会执行。 - 异常通知:程序出现异常之后执行的通知。
- 切面:把增强应用到切入点的过程。即把具体增强的逻辑用到具体的方法上面的过程。
- 目标对象:增强的方法所在的类,即要增强的类。
- Weaving(织入):是指把增强应用到目标对象的过程。即把把advice应用到target的过程。