在学习 Spring 中,有一个很重要的内容就是 AOP,面向切面编程。
下面我以一种通俗易懂的方式谈谈我的理解。
切面 = 切入点 + 额外功能。
我们先从几何的角度出发,我们都知道点构成面,任何一个面都是由很多个点构成的,比如桌面是由很多个木头点构成的,而这些木头点都有相同的特性:他们都是木头,如果我们想给这些木头点加一些额外的功能,让他们都变成红色的,只需要用红色的油漆将桌子刷成红色,相当于我们给桌子上的所有的点应用了一个红色的切面,其中红色就是额外功能。
假如现在我们有 3 个类,UserServiceImpl
、OrderServiceImpl
、ProductServiceImpl
。
我们将他们类比成 3 个圆柱体: