5.1 AOP基本思想
来源:互联网 发布:短网址生成算法 编辑:程序博客网 时间:2024/06/07 01:58
在第4章中,笔者通过事件传递的机制实现了日志的输出,其实Spring的AOP在这方面提供了更强大的功能。本章将首先让读者了解AOP的基本思想,然后通过对Java代理机制进行分析,引出AOP的3个关键概念,接着对Spring的AOP进行介绍,最后通过一个完整的实例让读者掌握Spring AOP的使用方法。
5.1 AOP基本思想
AOP的意思是面向方面编程,英文全称是Aspect Oriented Programming,它使开发人员可以更好地将本不该彼此粘合在一起的功能分离开。
5.1.1 认识AOP
开发人员在编写应用程序时,通常包含两种代码:一种是和业务系统有关的代码,一是和业务系统关系不大的代码,例如日志、权限、异常处理、事务处理等。以前编写代码时,这两种代码基本是写在一起的,这样在程序中,到处充满着相同或类似的代码,例如日志信息的输出,每个方法都要写日志的输出,不利于程序的维护。而AOP就是使这两种代码分离的思想。使用AOP,就不用在业务逻辑中实现与业务功能关系不大的代码,从而降低了两种代码的耦合性,达到易于维护和重用的目的。
AOP,从字面的意思来理解就是面向方面编程,但却容易让初学者一头雾水,很多资料也都对AOP进行过解释,但过多地从理论的角度进行讲解其实用性,这里不再多讲,仅用一个例子来说明:基本上每个方法都要用日志进行记录,那么如果按照面向对象的思路来说,就是每个对象都有记录日志这样一个行为。要在每个方法里添加日志的信息,必然会产生大量的重复代码,但可以将记录日志看作是一个横切面,所有对这些方法的调用都要经过这个横切面,然后在这个横切面进行记录日志的操作,这样就达到代码重用和易于维护的目的了,这就是AOP的思想。
5.1.2 AOP与OOP对比分析
OOP(面向对象编程)对现代编程产生了深远的影响,经过多年的发展,目前已日趋成熟,它能很好地解决软件系统中角色划分的问题,借助于面向对象的分析、设计和实现,开发人员可以将现实领域的实体转换成软件系统中的对象,从而很自然地完成从现实到软件的转换。但OOP并不是一种完美的思想,在某些方面,OOP也有其不足之处。比如在日志、事务处理、权限管理等方面,当应用OOP将这些内容封装为对象的行为时,会产生大量的重复代码,虽然通过一些方法可以减少这种重复,但却不能彻底地解决该问题,于是AOP出现了。前面讲过AOP能够降低代码的耦合性,使得代码易于维护和重用。一个应用程序分为核心关注点和横切关注点。核心关注点和具体应用的功能相关,而横切关注点存在于整个系统的范围内。
在AOP里,每个关注点的实现并不知道是否有其他关注点关注它,这是AOP和OOP的主要区别。在AOP里,组合的流向是从横切关注点到主关注点,而OOP中组合的流向则是从主关注点到横切关注点。从这点可以看出AOP和OOP它们所关注的对象是不同的,所以AOP可以和OOP很好地共存,AOP是OOP的有益补充,而不是其对立面。
5.1.3 AOP与Java的代理机制
AOP是一种思想,它和具体的实现技术无关。任何一种符合AOP思想的技术实现,都可以看作是AOP的实现。
JDK 1.3以后,Java提供了动态代理的机制。通过Java的动态代理机制,就可以很容易地实现AOP的思想。实际上Spring的AOP也是建立在Java的代理机制之上的。要理解Spring的AOP,先来了解Java的代理机制。下面主要通过一个输出日志的实例来使读者先了解Java的代理机制,从而引出AOP的几个关键点。
- 5.1 AOP基本思想
- AOP思想
- AOP思想
- AOP思想
- AOP思想实例讲解
- AOP编程思想
- AOP编程思想
- PHP之AOP思想
- AOP编程的思想
- Spring学习:AOP思想
- Spring中的AOP思想
- AOP编程思想理解
- AOP编程思想理解
- 简单介绍aop思想
- IOC模式和AOP思想
- IOC和AOP的思想
- 深入理解Aop编程思想
- AOP (面向切面编程)思想
- [基础回顾-JAVA类集框架篇] 之 集合排序Comparable与Comparator(上)
- windows ini configration file operation class / *.ini的C#操作类
- apache 虚拟主机管理
- LG英特尔合作开发基于Atom的MID设备(图)
- ASP.net页面跳转方式比较
- 5.1 AOP基本思想
- 5.2 从一个输出日志的实例分析Java的代理机制
- oracle物化视图刷新
- Java 产品与软件下载
- 介绍一种将ASCII码字符串转换为二进制字节数据的方法
- Server.Transfer和Response.Redirect的区别
- 必须掌握的八个【cmd 命令行】
- Windows2000Server+SP4+IIS 5.0+PHP5.2.8+SQLServer2000的配置
- 5.3 AOP的3个关键概念 & 5.4 Spring的3种切入点(Pointcut)实现