关于AOP的一些名词概念

1.织入(Weave)
将切面应用于某个对象并为该对象创建代理对象的过程(分为编译期,类加载期 和 运行期)。

2.切点 (pointcut)
切点定义了在何处织入何种代理的何种通知,切点会匹配通知(advice) 所织入(weave) 的 一个或者多个连接点。

3.连接点 (join point)
连接点是指在程序执行过程中能够插入切面的位置,程序中满足所有切点插入条件的所
有时机,也可以是所有切点的集合。

4.通知(advice,增强)
切面所做的工作叫通知(advice,也叫 增强),通知定义了切面是什么以及何时被执行。分为5种通知/增强(before前置通知,after后置通知,After-returning后置返回通知,After-throwing后置异常通知,Around环绕通知),定义了增强代码在何时执行。同时也描述了切面要完成的工作

5.切面(aspect)
切面是由通知(advice) 和切点(pointcut) 的共同定义的,切点定义了切面切入的位置,通知定义了切入的时间(通知方式)以及切面要完成的工作。

6.引入(introduction)
向原始类添加新的类和方法。

  1. 关于《spring in Action》上对于这些名词的解析非常贴切:
    假设电力公司负责抄电表的员工会定期去客户家里抄送电表数据,那么每个房子就会相应的安装一个电力表,但是,由于城市里面房子太多,所以电力公司会派不同的员工负责不同区域的电力数据抄送。那么,城市里面的所有房子上面的电力表,都会是某位员工潜在的抄送点(Point),所有这些点可以理解为(Join Point,连接点)。而对于某位员工来说,公司给他分配的负责的区域,可以理解为(pointcut,切点),而抄送的过程可以暂且理解为织入(weave)。而最重要的是,需要抄送用电量反馈给电力公司,而且这是主要工作,所以可以理解为(adivce,通知)。又假设每个月的某天进行电表的抄送,可以视作是通知的时机。而在什么时间,什么区域的电表(pointcut)需要完成哪些电量的抄送报告给公司(adivce)构成了抄表员工的主要工作(aspect,切面)。

你可能感兴趣的:(关于AOP的一些名词概念)