AOP是什么?为什么要使用AOP

时间:2022-03-25 14:56:16 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
AOP的全称Aspect-OrientedProgramming,即面向切面编程(也称面向方面编程)。它面向对象编程(OOP)的一种补充,目前已成为一种比较成熟的编程。 在传统的处理代码中,通常都会进行事务处理、日志记录等操作。虽然使用OOP可以通过组合或者继承的来达到代码的重用,但如果要实现某个功能(如日志记录),同样的代码仍然会分散到各个方法中。这样,如果想要关闭某个功能,或者对其进行,就必须要所有的相关方法。这不但增加了发人员的工作量,而且提高了代码的出错率。

为了解决这一问题,AOP思想随之产生。AOP采取横向抽取机制,将分散在各个方法中的重复代码提取出来,然后在程序编译或运行时,再将这些提取出来的代码应用到需要执行的地方。这种采用横向抽取机制的,采用传统的OOP思想显然无法到的,因为OOP只能实现父子关系的纵向的重用。虽然AOP一种新的编程思想,但却不OOP的替代品,它只OOP的延伸和补充。 AOP思想中,类与切面的关系如图1所示。



1类与切面的关系

从图1可以看出,通过Aspect(切面)分别在Class1Class2的方法中加入了事务、日志、权限和异常等功能。

AOP的使用,使发人员在编写逻辑时可以专心于核心,而不用过多的于其他逻辑的实现,这不但提高了发效率,而且增强了代码的可维护性。

目前的AOP框架有两个,分别为SpringAOPAspectJSpringAOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期间通过代理向目标类织入增强的代码。AspectJ一个基于Java语言的AOP框架,从Spring2.0始,SpringAOP入了对AspectJ的支持,AspectJ扩展了Java语言,了一个专门的编译器,在编译时横向代码的织入。

1


本文来源:https://www.wddqw.com/doc/e63537e5fd00bed5b9f3f90f76c66137ef064fbc.html