欢迎来到天天文库
浏览记录
ID:30791836
大小:52.50 KB
页数:4页
时间:2019-01-03
《spring学习篇:aop知识整理-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Spring学习篇:AOP知识整理-编程开发技术Spring学习篇:A0P知识整理原文出处:xiaoluo501395377AOP知识整理AOP(Aspect-OrientedProgramming):而向切而的编程。OOP(Object-OrientedProgramming)面向对象的编程。对于OOP我们已经再熟悉不过了,对于AOP,可能我们会觉得是一种新特性,其实AOP是对OOP的一种补充,OOP面向的是纵向编程,继承、封装、多态是其三大特性,而AOP是面向横向的编程。面向切面编程(AOP)通过
2、提供另外一•种思考程序结构的途经來弥补面向对象编程(OOP)的不足。在OOP中模块化的关键单元是类(classes),而在AOP中模块化的单元则是切而。切而能对关注点进行模块化,例如横切多个类型和对彖的事务管理。AOP框架是Spring的一个重要组成部分。但是SpringIoC容器并不依赖于AOP,这意味着你冇权利选择是否使用AOP,AOP做为SpringToC容器的一个补充,使它成为一个强大的中间件解决方案。AOP在SpringFramework屮的作用•提供声明式企业服务,特别是为了替代EJB声明
3、式服务。最重要的服务是声明性事务管理(这个我想是AOP使用最多的一处了)。•允许用户实现口定义切而,用AOP来完善OOP的使用。1.AOP概念:学习AOP,当然得先了解一下其众多的概念性术语:•切曲(AspectX一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用屮一个关于横切关注点的很好的例子。在SpringAOP'P,切面可以使用基于模式)或者基于@Aspect注解的方式来实现。•(Joinpoint):在程序执行过程中某个特定的点,比如某方法调用的时候或者处理界常的吋候。在
4、SpringAOP中,一个连接点总是表示一个方法的执行。•通知(Advice),在切面的某个特定的连接点上执行的动作。其屮包括了“annmcT、“before苗叫fter”等不同类型的通知(通知的类型将在后面部分进行讨论)。许多AOP框架(包括Spring)都是以拦截器做通知模型,并维护一个以连接点为中心的拦截器链。•切入点、(Pointcut):匹配连接点的断言。通知和一•个切入点表达式关联,并在满足这个切入点的连接点上运行(例如,当执行某个特定名称的方法时)。切入点表达式如何和连接点匹配是AOP的
5、核心:Spring缺省使川AspectJ切入点语法。•引入(Introduction)-.用来给一个类型声明额外的方法或属性(也被称为连接类型声明(inter-typedeclaration))oSpring允许引入新的接口(以及—个对应的实现)到任何被代理的对象。例如,尔可以使用引入來使一个berni实现IsModified接口,以便简化缓存机制。•目标对象(TargetObject^被一个或者多个切面所通知的对象。也被称做發遊勿(advised)对象。既然SpringAOP是通过运行时代理实现的,
6、这个对象永远是一个被代理(proxied)对彖。•AOP代理(AOPProxy);AOP框架创建的对象,用來实现切血契约(例如通知方法执行等等)。在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。•织入(Weaving把切而连接到其它的应用程序类型或者对象上,并创建一个被通知的对象。这些可以在编译时(例如使用Aspect;编译器),类加载时和运行时完成。Spring和其他纯JavaAOP框架一样,在运行吋完成织入。通知类型:•前遇通知(BeforeadWce):在某连接点之前执行的
7、通知,但这个通知不能阻止连接点之前的执行流程(除非它抛岀一个异常)。•(Afterreturningadvice):在某连接点正常完成后执行的通知:例如,一个方法没有抛出任何界常,正常返回。•界常通知(Afterthrowingadvice)x在方法抛出异常退出时执行的通知。•最终通知(After(finally)advice):当某连接点退出的时候执行的通知(不论是」]•:常返回还是异常退岀)。•环绕通知(AmimdAdvice):包围一个连接点的通知,如方法调用。这是最强大的一种通知类型。环绕通知
8、可以在方法调用前后完成口定义的行为。它也会选择是否继续执行连接点或直接返回它£1己的返I叫值或抛出异常来结束执行。环绕通知是最常用的通知类型。和AspectJ-样,Spring提供所有类型的通知,我们推荐你使用尽口J能简单的通知类型來实现需要的功能。例如,如果你只是需要一个方法的返回值來更新缓存,最好使用后置通知而不是环绕通知,尽管环绕通知也能完成同样的事情。用最合适的通知类型可以使得编程模型变得简单,并口能够避免很多潜在的错误。比如,你不需要在Join
此文档下载收益归作者所有