Spring(4)--对AOP的理解

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

而AOP技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象的内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”。所谓的切面,简单的说就是将那些与业务无关,却Wie业务模块锁共同调用的逻辑或责任封装起来。便于减少系统的重复代码,降低模块间的耦合度等。
实现AOP的技术,主要分为两类:一是采用动态代理技术,利用截取信息的方式,对该信息进行装饰,以取代原对象行为的执行;二是采用静态织入的方式,引入特定的语法创建切面,从而使得编译器可以在编译期间织入有关切面的代码。

理解以下概念:
切面(Aspect):一个关注点的模块化,这个关注点实现可能横切多个对象。声明式事务管理是J2EE应用中一个很好的很横切关注点例子。
连接点(joinpoint):程序执行过程中明确的点,如方法的调用或特定的异常被抛出。
通知,也意味着增强处理(Advice):在特定的连接点上AOP框架执行的动作。Spring中定义了四个advice: BeforeAdvice, AfterAdvice, ThrowAdvice和DynamicIntroductionAdvice
切入点(Pointcut):指定一个通知将被引发的一系列连接点的集合。
引入:将方法或字段添加到被通知的类中。
目标对象:含连接点的对象。Pojo对象
AOP代理(AOP Proxy): AOP框架创建的对象,包含通知。
织入(Weaving):将增强处理添加到目标对象中,并创建一个被增强的对象(AOP代理)。

发布了104 篇原创文章 · 获赞 56 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章