spring aop技术

spring aop技术

ID:27456790

大小:60.50 KB

页数:5页

时间:2018-12-04

spring aop技术_第1页
spring aop技术_第2页
spring aop技术_第3页
spring aop技术_第4页
spring aop技术_第5页
资源描述:

《spring aop技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、-1什么是AOP在介绍SpringAOP之前,先简单介绍一下AOP的概念。AOP是(AspectOrientedProgramming)的缩写,意思是面向切面(方面)编程。是一种可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的技术。AOP可以说是OOP(Object-OrientedPrograming,面向对象编程)的补充和完善。OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他

2、类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。AOP技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为”Aspect”,即方面(切面)。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP

3、代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为;那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱体剖开,以获得其内部的消息。而剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手将这些剖开的切面复原,不留痕迹。  如果说面向对象编程是关注将需求功能划分为不同的并且相对独立、封装良好的类,并让它们有着属于自己的行为,依靠继承和多态等来定义彼此的关系的话;那么面向方面编程则是希望能够将通用需求功能从不相关的类当中分离出来,能够使得很多类共享一个行为,一旦这些功能发生变化,不必修改

4、很多类,而只需要修改这个行为即可。1.1AOP中的一些基本概念方面(Aspect):对横向分布在多个对象中的关注点所做的模块化。在企业应用中,事务管理就是一个典型的横切关注点。连接点(Joinpoint):程序执行过程中的一个点,例如对某个方法的调用或者某个特定异常的抛出都可以称为连接点。通知(Advice):AOP框架在某个连接点所采取的行为。通知有多种类型,包括“环绕”通知,“前置”通知和“异常”通知等,后文将对通知类型进行讨论。切入点(Pointcut):指通知的应用条件,用于确定某个通知要被应用到哪些连接点上。AOP框架

5、应允许让开发人员指定切入点。引入(Introduction):向目标对象添加方法或字段的行为。目标对象(Targetobject):指包含连接点的对象。也称为被通知或被代理对象。AOP代理(AOPproxy):由AOP框架在将通知应用于目标对象后创建的对象。织入(Weaving):将方面进行组装,以创建一个目标对象。织入可以在编译期完成,也可以在运行时完成。横切技术:“横切”是AOP的专有名词。它是一种蕴含强大力量的相对简单的设计和编程技术,尤其是用于建立松散耦合的、可扩展的企业系统时。横切技术可以使得AOP在一个给定的编程模型

6、中穿越既定的职责部分(比如日志记录和性能优化)的操作。横切关注点:一个关注点(concern)就是一个特定的目的,一块我们感兴趣的区域,一段我们需要的逻辑行为。从技术的角度来说,一个典型的软件系统包含一些核心的关注点和系统级的关注点。举个例子来说,一个信用卡处理系统的核心关注点是借贷/存入处理,而系统级的关注点则是日志、事务完整性、授权、安全及性能问题等,许多关注点——即横切关注点(crosscuttingconcerns)——会在多个模块中出现。如果使用现有的编程方法,横切关注点会横越多个模块,结果是使系统难以设计、理解、实现

7、和演进。AOP能够比上述方法更好地分离系统关注点,从而提供模块化的横切关注点。---1.1AOP的通知类型环绕通知(AroundAdvise):包围(按:即在连接点执行的前、后执行)某个连接点(如方法调用)的通知。这是功能最强大的一种通知。环绕通知允许在方法调用的前后执行自定义行为。它可以决定是让连接点继续执行,还是用自己的返回值或异常来将连接点“短路”。前置通知(BeforeAdvise):在某个连接点执行之前执行,但是不具备阻止连接点继续执行的能力(除非它抛出异常)。异常通知(ThrowsAdvise):当方法(连接点)抛出

8、异常时执行。后置通知(AfterreturningAdvise):在连接点正常执行完成后执行,例如,如果方法正常返回,没有抛出异常时,后置通知就会被执行。1.2AOP的实现方式①采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;②

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。