1. 定义AOP意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 。AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率 。
我的理解是纵向关系是OOP,横向角度是 AOP 。
文章插图
2.OOP 与 AOP 的区别
- 面向目标不同:简单来说 OOP 是面向名词领域,AOP 面向动词领域 。
- 思想结构不同:OOP 是纵向结构,AOP 是横向结构 。
- 注重方面不同:OOP 注重业务逻辑单元的划分,AOP 偏重业务处理过程中的某个步骤或阶段 。
4. 关于AOP的几个术语1)aspect(切面):实现了cross-cutting功能,是针对切面的模块 。最常见的是logging模块,这样,程序按功能被分为好几层,如果按传统的继承的话,商业模型继承日志模块的话根本没有什么意义,而通过创建一个logging切面就可以使用AOP来实现相同的功能了 。
2)jointpoint(连接点):连接点是切面插入应用程序的地方,该点能被方法调用,而且也会被抛出意外 。连接点是应用程序提供给切面插入的地方,可以添加新的方法 。比如以上我们的切点可以认为是findInfo(String)方法 。
3)advice(处理逻辑):advice是我们切面功能的实现,它通知程序新的行为 。如在logging里,logging advice包括logging的实现代码,比如像写日志到一个文件中 。advice在jointpoint处插入到应用程序中 。以上我们在MyHandler.JAVA中实现了advice的功能
4)pointcut(切点):pointcut可以控制你把哪些advice应用于jointpoint上去 。决定了那个jointpoint会获得通知 。
5)introduction:允许添加新的方法和属性到类中 。
6)target(目标类):是指那些将使用advice的类,一般是指独立的那些商务模型 。比如以上的StudentInfoServiceImpl.
7) proxy(代理类):使用了proxy的模式 。是指应用了advice的对象,看起来和target对象很相似 。
8)weaving(插入):是指应用aspects到一个target对象创建proxy对象的过程:complie time,classload time,runtime
5. 实现AOP的实现主要是依赖代理模式,可以使用aspectj静态代理,cglib动态代理,jdk动态代理等实现 。具体可参照https://blog.csdn.net/qq_42072311/article/details/80320731
6. 主要功能日志记录,性能统计,安全控制,事务处理,异常处理等等 。
【面试官经常问AOP,那到底啥是AOP?】
推荐阅读
- 神经错乱是什么症状
- 生殖器官上面有疙瘩是怎么回事?
- 阴阳人的生殖器官有什么特征?
- 男生生殖器官长肉粒是怎么回事?
- 生殖器官长了痘痘是什么原因?
- 明朝官员俸禄相当于现在多少钱 明朝官员的俸禄工资收入表
- 刹车|特斯拉追尾坦克300 刹车失灵且动加速到170?官方回应:车主误踩加速踏板
- 宋朝官员俸禄 宋朝高薪能养廉工资
- 老人经常头晕吃什么好
- 海信|海信官宣墨水屏阅读手机新品:5月11日发布