如何理解面向切面编程中的切面?

2020-09-10 14:45:12 浏览数 (1)

在学习 Spring 中,有一个很重要的内容就是 AOP,面向切面编程。

  • 很多人疑惑为什么叫做面向切面?
  • 切面是什么意思,切入点是什么意思?

下面我以一种通俗易懂的方式谈谈我的理解。

切面与切入点

切面 = 切入点 额外功能。

我们先从几何的角度出发,我们都知道点构成面,任何一个面都是由很多个点构成的,比如桌面是由很多个木头点构成的,而这些木头点都有相同的特性:他们都是木头,如果我们想给这些木头点加一些额外的功能,让他们都变成红色的,只需要用红色的油漆将桌子刷成红色,相当于我们给桌子上的所有的点应用了一个红色的切面,其中红色就是额外功能。


假如现在我们有 3 个类,UserServiceImplOrderServiceImplProductServiceImpl

我们将他们类比成 3 个圆柱体:

  • 首先在这些圆柱体上各取一个点:相当于各取类中的一个方法。
  • 我们将这些点连起来,由此确定了一个平面:相当于将额外功能同时加到这几个方法上面。
  • 这个连起来得到的平面就是切面,切面上的点都附加了额外功能。

0 人点赞