面向切面编程(AOP)

本文详细解析了面向切面编程(AOP)与面向对象编程(OOP)的区别与联系,阐述了AOP如何通过预编译方式和运行期动态代理实现程序功能的统一维护,降低业务逻辑耦合度,提高代码可重用性和开发效率。同时介绍了AOP的术语,如切面、连接点、处理逻辑、切点、引入、目标类、代理类和插入,并探讨了AOP的主要功能和实现方式。

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

1. 定义

         AOP意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

       我的理解是纵向关系是OOP,横向角度是 AOP。

2.OOP 与 AOP 的区别

  1. 面向目标不同:简单来说 OOP 是面向名词领域,AOP 面向动词领域。

  2. 思想结构不同:OOP 是纵向结构,AOP 是横向结构。

  3. 注重方面不同:OOP 注重业务逻辑单元的划分,AOP 偏重业务处理过程中的某个步骤或阶段。

3.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.youkuaiyun.com/qq_42072311/article/details/80320731

6. 主要功能

日志记录,性能统计,安全控制,事务处理,异常处理等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值