springAOP是什么?通俗易懂

本文探讨了面向对象编程(OOP)与面向切面编程(AOP)的区别及优势。详细解释了AOP如何解决OOP在代码复用和模块化方面的局限性,通过实例阐述了AOP的核心概念,包括通知、连接点、切入点、切面、引入、目标和代理,以及织入过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们学习了这么长时间java,大家都知道java是oop面向对象的语言,那为什么要面向对象呢?或者说面向对象有什么好处呢?我想大家也知道,无非就是编写出可维护,可扩展,可复用,灵活性好的代码,也就是为了少写代码而多写代码.但它有一些弊端,OOP引入封装、继承和多态等概念来建立一种对象层次结构,是吧,也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码一般都是水平地散布在所有对象层次中,但是它和对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理也是如此。这种代码就称为横切代码,在OOP设计中,它会导致了大量代码的重复,而不利于各个模块的重用。

AOP的出现弥补了OOP的这点不足。

AOP核心就是代理.像代理模式,就和找代练一样.我一个青铜,我定的小目标就是上王者,怎么办?找代练,钱给到位,呢我是不是可以很轻松的上王者了?如果不找的话,你还得花时间练技术,花时间去上分.哪天一妹子找你玩王者荣耀,你又想王者荣耀上王者,怎么办?换个王者荣耀的代练不就好了?我就会省下很多功夫.
这就好比我们的动态代理,不用修改任何已经编写好的代码,只要使用代理就可以灵活的加入任何东西,将来不喜欢了,不用也不会影响原来的代码。

spring的AOP的核心基石就是动态代理

那么AOP到底是什么呢?

他的定义就是面向切面编程,能够让我们在不影响原有功能的前提下,为软件横向扩展 功能.
也就是可以不影响我自己的情况下附加功能,如果oop相当于美国队长,AOP就相当于钢铁侠,前者打了血清后,血清就和美国队长合二为一了.血清和美国队长的耦合性就可高了;后者穿上钢铁战衣就是钢铁侠,脱下就是血肉之躯,耦合性就可低.

关于aop的术语有7个.
** 1.通知(Advice)?*

就是你想要的功能,然后在想用的地方用一下。就相当于你想玩英雄联盟开个脚本,你得先登录,得通知我你脚本的账号和密码吧;

** 2.连接点(JoinPoint)?*

连接点就是spring允许你使用通知的地方,基本每个方法的前,后(两者都有也行),或抛出异常时都可以是连接点,就是游戏里能开脚本的地方,更改攻击防御属性更改金币,自动走位等等,.

** 3.切入点(Pointcut)?*

上面说的连接点的基础上,来定义切入点,你的一个类里,有15个方法,那就有几十个连接点了,但是你并不想在所有方法都使用通知.那么地方可开脚本,想改了1000护甲1000魔抗,自动走位什么的,你不想都开把,改了1000护甲1000魔抗过分点了吧.

** 4.切面(Aspect)?*

切面是通知和切入点的结合。通知说明了干什么和什么时候干,而切入点说明了在哪干,也就是你开脚本的过程

** 5.引入(introduction**)

允许我们向现有的类添加新方法属性。就是把切面用到目标类中,就是把脚本用到游戏上.

** 6.目标(target)?*

引入中所提到的目标类,也就是要被通知的对象,也就是真正的业务逻辑,他可以在毫不知情的情况下,被咱们织入切面。而自己专注于业务本身的逻辑。也就是说,可以在毫不知情的情况下,被我们加入脚本的游戏.
7.代理(proxy)

怎么实现整套aop机制的,都是通过代理,也就是脚本的实现过程.

** 8.织入(weaving)**

把切面应用到目标对象来创建新的代理对象的过程。就是把脚本应用到游戏来操作的过程.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值