看了这么多参考书,我认为还是良GG的解释比较精到,这可能也是人家是培训师的缘故。
AOP和OOP有比较大的不通。OOP集中于对象的建模和行为的封装,而AOP考虑的是在流程上如何建模一个比较单独的功能。用OOP来构建一个核心系统是非常好的,但是,如果需要很多其他相关功能,这个时候AOP就有其用武之处了。
AOP关注的Cross-cutting concerns, 从这些关注面中,我们抽取出一些可识别的Aspects,然后我们把这些Aspects具体设计为Advices,这些Advices根据我们的要求PointCut,将这些Advices具体Weave到应用的这些可以插入的JointPoint中去。
这样子就非常好理解了。对应到Spring当中:
Aspects 的 具体设计 Advices,它对应到Spring当中,就是那些具体执行操作的类。比如说BeforeAdivce之类的这些表示Aspect的类。
PointCut就是一堆配置信息,它描述了有那些Advices使用到那些JointPoint当中去。它对应到Spring当中,就是对应的ProxyFactoryBean当中的配置信息。Weave就是ProxyFactoryBean,从名字上也知道它是一个代理工厂,生成原方法的代理对象,然后将Aspect定义的这些功能动态增加到对象中去。
JointPoint:其实就是插入点,一般对象在执行方法的时候可以被插入其他的功能。在Spring中,只支持在Method层次上进行插入,而不支持在Field层次上进行插入,因为这样的话实际上已经对对象的状态产生影响了,它连原来的对象都不是了,不适合用来构建应用系统。
其实静态代理和动态代理的了解对Spring AOP的理解真的是有非常大的帮助,因为Spring AOP就是靠动态代理技术以及动态字节码生成技术来达到目标的:通过构建对象的代理对象来完成功能的插入。
现在真的很佩服Spring。上次对Spring JDBC的分析,发现Spring对JDBC的理解绝对是非常准确到位,给开发人员提供了非常好的封装,尽量简化了对JDBC的编码。而Spring AOP,应用代理技术到事务管理上,完全可以让开发人员以声明式事务管理的方式将事务管理添加到应用中,简化了对事务的处理。
Rod Johnson确实厉害啊。我觉得很有必要重新读一下Expert one on one
分享到:
相关推荐
### Spring AOP面向方面编程原理:AOP概念详解 #### 一、引言 随着软件系统的日益复杂,传统的面向对象编程(OOP)逐渐暴露出难以应对某些横切关注点(cross-cutting concerns)的问题。为了解决这一挑战,面向方面编程...
在SpringAOP中,有几个关键的概念: 1. 连接点(Joinpoint)是指程序执行中的某个特定位置,如方法的调用前后、抛出异常后。在Spring中,仅支持方法作为连接点。 2. 切点(Pointcut)是用于匹配连接点的表达式,它...
**Spring AOP 概念理解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它允许我们通过定义“切面”来模块化横切关注点,比如日志、事务管理、性能监控等。在传统的...
首先,我们需要理解Spring AOP的核心概念。切面(Aspect)是关注点的模块化,这些关注点定义了跨越多个对象的行为或责任。切点(Join Point)是程序执行中的特定点,如方法调用或异常处理。通知(Advice)是在特定...
首先,我们要理解AOP的核心概念。AOP是一种编程范式,它允许开发者定义“切面”(Aspects),这些切面封装了特定的关注点,如日志、性能监控等。在运行时,这些关注点被编织到应用程序的主业务逻辑中,使得代码更...
首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了横切关注点,即那些跨越多个对象的业务逻辑。在Spring AOP中,切面可以通过两种方式定义:使用注解或者XML配置。在这个例子中,我们可能会...
这个简单例子将帮助我们理解AOP的基本概念和如何在Spring框架中实现它。 首先,我们要知道AOP的核心概念:切面、通知、连接点、切点、目标对象和代理。切面是包含横切关注点(如日志记录、事务管理等)的模块化组件...
Spring AOP(面向切面编程)是Spring框架中的一个重要组件,它允许我们在不修改源代码的情况下,对程序的行为进行...这个简单的示例为我们展示了如何通过XML配置实现这一功能,是学习和理解Spring AOP的一个良好起点。
Spring AOP,即Aspect Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它提供了一种在不修改...对于初学者来说,这是一个很好的实践案例,能够帮助他们理解和掌握Spring AOP的核心概念和用法。
本文将深入探讨Spring AOP的基本概念、工作原理,并通过简单的模拟实现来帮助理解。 首先,我们需要了解AOP的核心概念: 1. **切面(Aspect)**:切面是包含横切关注点的模块,如日志、事务等。在Spring AOP中,切...
这将帮助你理解AOP的工作原理以及如何在实际项目中使用。 通过这三个例子,你可以深入理解Spring框架的核心特性,并且能够动手实践,这对于Spring的学习和掌握非常有帮助。每个例子都值得仔细研究,以便更好地理解...
在本示例中,我们将深入探讨Spring框架2.5.6版本中的面向切面编程(AOP)概念。Spring AOP是Spring框架的核心组件之一,它允许开发者在不修改源代码的情况下,对程序进行横切关注点(如日志、事务管理、性能监控等)...
**AOP(面向切面编程)简单实现及Log4j应用** 面向切面编程(Aspect Oriented Programming,简称AOP)是一种编程...通过学习这个例子,我们可以深入理解AOP的核心概念,并了解如何在实际项目中使用Log4j进行日志管理。
Spring AOP 基础关于 AOP 是什么的理解 AOP(Aspect Oriented Programming 面向方面的编程)是一种实现横切面的工具,它是 OOP 的补充,而不是 OOP 的竞争对手。AOP 的出现是为了解决 OOP 中的缺陷,即 OOP 中的类...
本教程将深入探讨Spring中的核心概念之一——面向切面编程(Aspect-Oriented Programming,简称AOP),并提供基于注解和XML配置的两种实现方式的简单实例。 **一、什么是AOP** 面向切面编程(AOP)是一种编程范式...
在本示例中,我们将深入探讨Spring框架的3.1版本中的核心概念之一:面向切面编程(Aspect-...通过学习和理解这个简单的例子,我们可以更好地掌握这一关键特性,并将其应用于实际项目中,提升软件的质量和可维护性。
标题 "一个简单的AOP demo" 暗示我们将探讨面向切面编程(Aspect-Oriented Programming,简称AOP)的基本概念以及如何通过一个简单的实例来理解它。在软件开发中,AOP是一种编程范式,它允许我们分离关注点,比如...
首先,理解AOP的核心概念——切面(Aspect)。切面是将关注点(Concern)模块化的结果,它封装了横切关注点,可以包括通知(Advice)、切入点(Pointcut)和织入(Weaving)。通知是在特定时机执行的代码,比如方法...
在IT行业中,Spring AOP(面向切面编程)是一种强大的工具,它允许程序员在不修改原有...通过理解和应用这些概念,开发者可以更好地管理他们的应用程序,尤其是那些需要大量日志记录、事务管理或性能监控的复杂系统。