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

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

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

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

切面与切入点

切面 = 切入点 + 额外功能。

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


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕子鸽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值