对Spring aop的理解

  记得有次面试中面试官问到,跟我谈谈spring aop,当时我就闷了,当时脑海里只浮现出切入点、切面、引入、通知等等一些很模糊的概念,于是结果可想而知。所以最近用下心来为自己做下记录方便以后查看(为以后的面试做好准备,呵呵),如果以下有什么疏忽的地方或者写的不好的地方,还请发现者多多指导。

  什么是AOP

  AOP(Aspect-OrientedProgramming),也就是面向切面编程。也可以这样理解,学java的应该都知道面向对象编程(oop),而OOP是从静态解读考虑程序结构,但AOP是从动态角度考虑程序运行过程。也可以说AOP是OOP的补充和完善。OOP引入了封装、继承和多态性等概念来建立一种对象层次结构, 用以模拟公共的一个集合。当我们需要为分散的对象引入公共行为的时候,则OOP显得无能为力了。也就是说,OOP允许你定义从上到下的关系,但并不适合从左到右的关系,例如日志功能。日志代码往往水平的散步在所有对象层次中,而与它所散步到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切代码,在oop设计中,他导致了大量代码的重复,而不利于各个模块的重用。

  而AOP技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将哪些影响了多个类的公共行为封装到一个可重用模块,并将其名为‘Aspect‘,及方面。 所谓"方面",简单的来说就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来。便于减少系统的重复代码,降低模块间的耦合度等。

  实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取信息的方式,对该信息进行装饰,以取代鱼油对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。

AOP的相关概念

  方面:一个关注点的模块化,这个关注点实现可能另外横切多个对象。事物管理是J2EE应用中一个很好的很横切关注点例子。

  连接点:程序执行过程中明确的点,如方法的调用或特定的异常被抛出。

  通知:在特定的连接点上AOP框架执行的动作。Spring中定义了四个advice: BeforeAdvice, AfterAdvice, ThrowAdvice和DynamicIntroductionAdvice

  切入点:指定一个通知将被引发的一系列连接点的集合。

  引入:添加方法或字段到被通知的类。

  目标对象:含连接点的对象。pojo

  AOP代理(AOP Proxy): AOP框架创建的对象,包含通知。

  织入(Weaving): 组装方面来创建一个被通知对象。

AOP配置

  这个可以参考其他地方的写法,这里就不多叙述了。

参考文章地址:http://blog.csdn.net/moreevan/article/details/11977115

时间: 2024-11-07 10:52:52

对Spring aop的理解的相关文章

Spring AOP深入理解之拦截器调用

Spring AOP深入理解之拦截器调用 Spring AOP代理对象生成回想 上一篇博客中:深入理解Spring AOP之二代理对象生成介绍了Spring代理对象是怎样生成的,当中重点介绍了JDK动态代理方式,简单回想下代理对象生成过程: 1.上面讲到了两种生成代理对象的方法,一种是通过ProxyFactory,一种是通过ProxyFactoryBean. 第一种获取比較简单,可是须要手工的进行写代码.而另外一种是通过Spring的IOC机制来控制Bean的生成. 2.不管是ProxyFact

Spring AOP的理解

这是在网上发现的一篇关于Spring AOP编程的教程,读完这篇文章后,Spring AOP不再难以理解,因此我把它译成中文,推荐给Spring AOP的初学者. AOP正在成为软件开发的下一个圣杯.使用AOP,你可以将处理aspect的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect.AOP可以防止代码混乱.  为了理解AOP如何做到这点,考虑一下记日志的工作.日志本身不太可能是你开发的主程序的主要任务.如果能将“不可见的”.通用的日志代码注入主程序中,那该多好啊.AOP可以帮

Spring Aop的理解和简单实现

1.AOP概念 所说的面向切面编程其实就是在处理一系列业务逻辑的时候这一系列动作看成一个动作集合.比如连接数据库来说: 加载驱动-----获取class--------获取连接对象-------访问数据库------查询---------操作结果 对于上面的这一系列动作我们把其中的虚线看成是一个个的切面.然后我们在虚线的位置上加入一些逻辑.哪怕是日志,这也就成就了在不知不觉中将逻辑处理加入到了相应的位置上.而形成了所谓的面向切面编程! 下面通过@Before演示Aop织入到方法之前执行一些逻辑

spring aop 的理解

spring aop的相关概念(所有的概念都是为了生成代理类这个过程所需要的信息的抽象): 1.Targer:目标对象.被代理的对象. 2.Advice:增强/通知.就是为目标对象扩展的功能.分为前置增强.后置增强,异常增强,最终增强,环绕增强. 3.Pointcut:切入点.指明增强要在目标了的那些方法上使用. 4.Aspect:切面.就是增强(通知)和切入点的集合.如果一个切面没有切入点,那么增强就是一个切面,这个使用增强应用在目标类的所有方法上 5.Joinpoint:连接点.用来在增强的

Spring AOP概念理解

1.我所知道的aop 初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等.一下子让你不知所措,心想着:怪不得很多人都和我说aop多难多难.当我看进去以后,我才发现:它就是一些java基础上的朴实无华的应用,包括ioc,包括许许多多这样的名词,都是万变不离其宗而已. 2.为什么用aop 1就是为了方便,看一个国外很有名的大师说,编程的人都是"懒人",因为他把自己做的事情都让程序做了.用了aop能让你少写很多代码,这点就够充分了吧 2就是为了

Spring AOP的理解和使用

AOP是Spring框架面向切面的编程思想,AOP采用一种称为“横切”的技术,将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面,在合适的时机将这些切面横向切入到业务流程指定的位置中. 掌握AOP的实现技术 Spring框架的AOP机制可以让开发者把业务流程中的通用功能抽取出来,单独编写功能代码.在业务流程执行过程中,Spring框架会根据业务流程要求,自动把独立编写的功能代码切入到流程的合适位置. AOP编程思想及术语 AOP是面向切面的编程,其编程思想是把散布于不同业务但功能相同的代码

Spring AOP 简单理解

AOP技术即(面向切面编程)技术是在面向对象编程基础上的发展,AOP技术是对所有对象或一类对象编程.核心是在不增加代码的基础上,还增加了新的功能.AOP编程在开发框架本身用的比较多,而实际项目中,用的比较少.它是将分散在各个业务逻辑代码中的相同代码抽取出来形成一个独立的模块. 1.定义AOP术语 (1)切面(aspect):要实现的交叉功能,是系统模块化的一个切面或领域. (2)通知(advice):切面的具体实现,包含五类通知. (3)连接点(jointpoint):应用程序执行过程中插入切面

Spring AOP面向切面编程

出处:http://yangfei520.blog.51cto.com/1041581/1273069 前两天,在给新入职的同事做技术介绍时,讲到spring的AOP.使我又一次认识到,对于AOP,特别是spring AOP的理解,虽然大家都能说上来几句,但是许多人认识并不太全面,甚至可以说是一知半解----即使是对于那些已经有过几年开发经验的工程师也是如此.所以,回来之后,我干脆对这块东西做了个肤浅的小结,以便再有类似任务时,直接拿来给大家借鉴. AOP(Aspect-Oriented Pro

深入理解Spring AOP之基本概念

深入理解Spring AOP之基本概念 AOP到底是什么 Spring AOP和IOC是听到的关于Spring最频繁的两个词了.现在来重点关注AOP这个词,IOC先放一边,下面这段话摘自Spring优势中关于面向切面的介绍: 面向切面--Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发.应用对象只实现它们应该做的--完成业务逻辑--仅此而已.它们并不负责(甚至是意识)其它的系统级关