论坛首页 入门技术论坛

AOP概念的简单理解

浏览 12207 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-05-16  
       看了这么多参考书,我认为还是良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
   发表时间:2007-05-18  
解释的精到,我认为理解Spring要注重三点:
一。IOC机制
二。AOP机制
三。类层次结构的组织,真正从开发者的角度去思考框架的实现。

不要说一,二不是Spring所特有的,而是我觉得他设计的就是优雅。
0 请登录后投票
   发表时间:2007-05-18  
spring ioc很优雅吗?
我认为google guice跟他有得一拼!
0 请登录后投票
   发表时间:2007-05-20  
AOP,DI,IOC是Spring的核心,
0 请登录后投票
   发表时间:2007-05-21  
解析的很不错!AOP理解起来总是比较拗口!呵呵。

另外: DI和IOC差不多是一个概念吧!^_^
0 请登录后投票
   发表时间:2007-05-21  
galaxystar 写道
spring ioc很优雅吗?
我认为google guice跟他有得一拼!

对对。我认为Guice甚至更好一些,它的ioc更加简单易用。
0 请登录后投票
   发表时间:2007-05-21  
我粗略看了一下GUICE。
可能我对于XDOCLET不是很熟悉,我认为它定义的那些标签也不是很好理解。

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

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

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

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

对对。我认为Guice甚至更好一些,它的ioc更加简单易用。
0 请登录后投票
   发表时间:2007-05-21  
xj4150 写道
galaxystar 写道
spring ioc很优雅吗?
我认为google guice跟他有得一拼!

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

不知道您所说的,从什么地方体现出优雅了,使用Anno?而Spring现在也可以使用Anno了,可能是由于只关注于某一领域,所以可以更加地深入,更加地优化,最令人向往的,应该还是其所说的性能上面的优越性。
0 请登录后投票
   发表时间:2007-05-22  
AOP,其实我们一直都在用,虽然都是很简单的。
比如servlet中的filter,日志的输出。。。
0 请登录后投票
   发表时间:2007-05-22  
spring的日志写法非常的好用。。。。
那些研究hibernate剩饭的GG们可以跳过来写个日志的spring配置出来。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics