`

AOP概念的简单理解

阅读更多
       看了这么多参考书,我认为还是良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
分享到:
评论
14 楼 hiwzg 2007-07-20  
   前天听了一位新来的同事讲FrameServer,自主实现的IOC容器。也实现了大部分AOP功能,但其解决的问题居然是为了对付多种不同终端的显示问题。而要处理这个问题根本不用绕这么大圈子,做这些东西无非就是为了纯粹学习的目的。看着轮子一次次的被重造,而没有突破,觉得是对生命的浪费。


13 楼 galaxystar 2007-07-14  
我认为, 其实guide最主要的还是隔离了配置文件,这是一大优势, 大型项目使用guide好处是,所有的DI都是以最亲切的类形式展示的。比较xml与java类来说,前者灵活性就低了很多。
12 楼 huhu_220 2007-05-28  
不错不错!!
11 楼 magice 2007-05-26  
不知道spring的动态代理Advisor,大家有没有在实际的项目中用到过?
好像没有什么用一样
10 楼 阳光晒晒 2007-05-22  
spring的日志写法非常的好用。。。。
那些研究hibernate剩饭的GG们可以跳过来写个日志的spring配置出来。
9 楼 icefire 2007-05-22  
AOP,其实我们一直都在用,虽然都是很简单的。
比如servlet中的filter,日志的输出。。。
8 楼 rainlife 2007-05-21  
xj4150 写道
galaxystar 写道
spring ioc很优雅吗?
我认为google guice跟他有得一拼!

对对。我认为Guice甚至更好一些,它的ioc更加简单易用。

不知道您所说的,从什么地方体现出优雅了,使用Anno?而Spring现在也可以使用Anno了,可能是由于只关注于某一领域,所以可以更加地深入,更加地优化,最令人向往的,应该还是其所说的性能上面的优越性。
7 楼 hiwzg 2007-05-21  
我粗略看了一下GUICE。
可能我对于XDOCLET不是很熟悉,我认为它定义的那些标签也不是很好理解。

但据说性能比Spring IOC的容器快很多,这个倒是值得期待的。

想想看它会采用什么样的方式实现IOC的呢?估计也逃不拖那几种注入方式。

有谁分析下。看看GUICE的精髓是什么,嘿嘿。

xj4150 写道
galaxystar 写道
spring ioc很优雅吗?
我认为google guice跟他有得一拼!

对对。我认为Guice甚至更好一些,它的ioc更加简单易用。
6 楼 xj4150 2007-05-21  
galaxystar 写道
spring ioc很优雅吗?
我认为google guice跟他有得一拼!

对对。我认为Guice甚至更好一些,它的ioc更加简单易用。
5 楼 evan1234 2007-05-21  
解析的很不错!AOP理解起来总是比较拗口!呵呵。

另外: DI和IOC差不多是一个概念吧!^_^
4 楼 qqyb2000 2007-05-20  
AOP,DI,IOC是Spring的核心,
3 楼 galaxystar 2007-05-18  
spring ioc很优雅吗?
我认为google guice跟他有得一拼!
2 楼 lendo.du 2007-05-18  
解释的精到,我认为理解Spring要注重三点:
一。IOC机制
二。AOP机制
三。类层次结构的组织,真正从开发者的角度去思考框架的实现。

不要说一,二不是Spring所特有的,而是我觉得他设计的就是优雅。
1 楼 suyulin6688 2007-05-17  
spring出品,必属精品。

相关推荐

    Spring AOP面向方面编程原理:AOP概念

    ### Spring AOP面向方面编程原理:AOP概念详解 #### 一、引言 随着软件系统的日益复杂,传统的面向对象编程(OOP)逐渐暴露出难以应对某些横切关注点(cross-cutting concerns)的问题。为了解决这一挑战,面向方面编程...

    SpringAop的简单理解.pdf

    在SpringAOP中,有几个关键的概念: 1. 连接点(Joinpoint)是指程序执行中的某个特定位置,如方法的调用前后、抛出异常后。在Spring中,仅支持方法作为连接点。 2. 切点(Pointcut)是用于匹配连接点的表达式,它...

    Spring AOP 概念理解及@AspectJ支持

    **Spring AOP 概念理解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它允许我们通过定义“切面”来模块化横切关注点,比如日志、事务管理、性能监控等。在传统的...

    Spring Aop的简单实现

    首先,我们需要理解Spring AOP的核心概念。切面(Aspect)是关注点的模块化,这些关注点定义了跨越多个对象的行为或责任。切点(Join Point)是程序执行中的特定点,如方法调用或异常处理。通知(Advice)是在特定...

    简单spring aop 例子

    首先,我们要理解AOP的核心概念。AOP是一种编程范式,它允许开发者定义“切面”(Aspects),这些切面封装了特定的关注点,如日志、性能监控等。在运行时,这些关注点被编织到应用程序的主业务逻辑中,使得代码更...

    Spring AOP的简单实现

    首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了横切关注点,即那些跨越多个对象的业务逻辑。在Spring AOP中,切面可以通过两种方式定义:使用注解或者XML配置。在这个例子中,我们可能会...

    spring的aop简单例子

    这个简单例子将帮助我们理解AOP的基本概念和如何在Spring框架中实现它。 首先,我们要知道AOP的核心概念:切面、通知、连接点、切点、目标对象和代理。切面是包含横切关注点(如日志记录、事务管理等)的模块化组件...

    Sping aop简单示例

    Spring AOP(面向切面编程)是Spring框架中的一个重要组件,它允许我们在不修改源代码的情况下,对程序的行为进行...这个简单的示例为我们展示了如何通过XML配置实现这一功能,是学习和理解Spring AOP的一个良好起点。

    SpringAOP简单项目实现

    Spring AOP,即Aspect Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它提供了一种在不修改...对于初学者来说,这是一个很好的实践案例,能够帮助他们理解和掌握Spring AOP的核心概念和用法。

    Spring AOP简单模拟

    本文将深入探讨Spring AOP的基本概念、工作原理,并通过简单的模拟实现来帮助理解。 首先,我们需要了解AOP的核心概念: 1. **切面(Aspect)**:切面是包含横切关注点的模块,如日志、事务等。在Spring AOP中,切...

    Spring IOC AOP MVC 简单例子

    这将帮助你理解AOP的工作原理以及如何在实际项目中使用。 通过这三个例子,你可以深入理解Spring框架的核心特性,并且能够动手实践,这对于Spring的学习和掌握非常有帮助。每个例子都值得仔细研究,以便更好地理解...

    spring2.5.6 aop简单示例

    在本示例中,我们将深入探讨Spring框架2.5.6版本中的面向切面编程(AOP)概念。Spring AOP是Spring框架的核心组件之一,它允许开发者在不修改源代码的情况下,对程序进行横切关注点(如日志、事务管理、性能监控等)...

    AOP简单实现

    **AOP(面向切面编程)简单实现及Log4j应用** 面向切面编程(Aspect Oriented Programming,简称AOP)是一种编程...通过学习这个例子,我们可以深入理解AOP的核心概念,并了解如何在实际项目中使用Log4j进行日志管理。

    Spring AOP基础关于AOP是什么的理解

    Spring AOP 基础关于 AOP 是什么的理解 AOP(Aspect Oriented Programming 面向方面的编程)是一种实现横切面的工具,它是 OOP 的补充,而不是 OOP 的竞争对手。AOP 的出现是为了解决 OOP 中的缺陷,即 OOP 中的类...

    Spring_02_入门篇_AOP_简单实例

    本教程将深入探讨Spring中的核心概念之一——面向切面编程(Aspect-Oriented Programming,简称AOP),并提供基于注解和XML配置的两种实现方式的简单实例。 **一、什么是AOP** 面向切面编程(AOP)是一种编程范式...

    Spring3.1AOP简单例子

    在本示例中,我们将深入探讨Spring框架的3.1版本中的核心概念之一:面向切面编程(Aspect-...通过学习和理解这个简单的例子,我们可以更好地掌握这一关键特性,并将其应用于实际项目中,提升软件的质量和可维护性。

    一个简单的aop demo

    标题 "一个简单的AOP demo" 暗示我们将探讨面向切面编程(Aspect-Oriented Programming,简称AOP)的基本概念以及如何通过一个简单的实例来理解它。在软件开发中,AOP是一种编程范式,它允许我们分离关注点,比如...

    SPRING AOP 概念解析以及例子示范

    首先,理解AOP的核心概念——切面(Aspect)。切面是将关注点(Concern)模块化的结果,它封装了横切关注点,可以包括通知(Advice)、切入点(Pointcut)和织入(Weaving)。通知是在特定时机执行的代码,比如方法...

    spring aop简单应用示例

    在IT行业中,Spring AOP(面向切面编程)是一种强大的工具,它允许程序员在不修改原有...通过理解和应用这些概念,开发者可以更好地管理他们的应用程序,尤其是那些需要大量日志记录、事务管理或性能监控的复杂系统。

Global site tag (gtag.js) - Google Analytics