AOP

来源:互联网 发布:死是什么感觉 知乎 编辑:程序博客网 时间:2024/06/05 08:23
1、什么是AOP?
Aspect Oritented Programming 的简称,面向切面编程。
   AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
比如我们最常见的就是日志记录了,举个例子,我们现在提供一个查询学生信息的服务,但是我们希望记录有谁进行了这个查询。如果按照传统的OOP的实现的话,那我们实现了一个查询学生信息的服务接口(StudentInfoService)和其实现 类 (StudentInfoServiceImpl.java),同时为了要进行记录的话,那我们在实现类(StudentInfoServiceImpl.java)中要添加其实现记录的过程。
   假如我们要实现的服务有多个呢?那就要在每个实现的类都添加这些记录过程。这样做就会有点繁琐,而且每个实现类都与记录服务日志的行为紧耦合,违反了面向对象的规则。那么怎样才能把记录服务的行为与业务处理过程中分离出来呢?看起来好像就是查询学生的服务自己在进行,但却是背后日志记录对这些行为进行记录,并且查询学生的服务不知道存在这些记录过程,这就是我们要讨论AOP的目的所在。

2、为什么要使用AOP?
(1)解耦
(2)重复利用代码
(3)便于装卸

3、AOP的优缺点?
优点:
(1)切面的定义放在xml里面,我们可以灵活的配置
(2)易于测试
(3)易于装卸
缺点:
(1)创建对象的流程麻烦了
(2)由于spring大部分采用反射机制来实现,因此性能一定是个问题
(3)由于对象的定义放在xml,对于使用eclipse来重构就会比较麻烦
0 0
原创粉丝点击