??xml version="1.0" encoding="utf-8" standalone="yes"?>精品在线免费视频,久久精品国产精品国产精品污,国产精华一区二区三区http://www.aygfsteel.com/43880800/category/19349.htmlzh-cnWed, 28 Feb 2007 03:44:46 GMTWed, 28 Feb 2007 03:44:46 GMT60Spring vs EJBhttp://www.aygfsteel.com/43880800/archive/2007/02/09/99039.htmlTomTomFri, 09 Feb 2007 08:46:00 GMThttp://www.aygfsteel.com/43880800/archive/2007/02/09/99039.htmlhttp://www.aygfsteel.com/43880800/comments/99039.htmlhttp://www.aygfsteel.com/43880800/archive/2007/02/09/99039.html#Feedback0http://www.aygfsteel.com/43880800/comments/commentRss/99039.htmlhttp://www.aygfsteel.com/43880800/services/trackbacks/99039.html 

几天前,在Don Box的博客上Q我设法回答一个问?Spring比EJB单吗Q?.现在,q个问题像是有些多余了,因ؓSpring和EJB的目标ƈ不完全一_但也总EJB和Spring两者所共有之处来回{,是可以的。Ted Neward在他的博客上Ҏ的回复进行了评论,我现在去回应一下他的观炏V?/p>

  Ted评论:Spring是一个比EJB单多了的框架Q因为Spring更多是用ZPOJO(PlainObject Old Object)的方案,但对?一些情?下,它ƈ不简?而是更复杂?/p>

  Rod:好的,?一些情??地球是扁q的对吧。在我的l验中,如果实现业务逻辑所需要的java Object过3个的时候,认ؓ用POJO(通常有一个接?Ҏ更复杂的人很:l我印象深刻的是Q那些否定POJOҎ的那些hQ真正尝试两U方案ƈ做出Ҏ的h为零。可能他们有自己的观点,但我q不知道?也许直接的事务和q程Ҏ更另人愉悦?)我真的非常希望看到能真正证明ZPOJO的方案更复杂更难用的评论?/p>

  Rod:Z么Spring比EJB单易?我不能给你一个独立的主观臆断Q我可以告诉你的是,我是借鉴EJBQƈq用我多q的l验来设计Spring的,我也很乐于去比较.从一开始,Spring(或者其他的IOC加Services框架)框架是和你的业务代码隔ȝQ没有藕合的.q个区别是很有重大意义的。Q何Object可以被事务化而不需要陷入EJB的丛林中。这对于代码的重用也是有意义的。实际上Q在你自q业务对象中,很少有框架的侵入Q换句话_你会有更多的自由去运用面向对象的分析设计?/p>

  Ted:哦,我已l说q了Q企业pȝ通常不是来练习OO(面向对象),因ؓ那么做有一U让我们陷入ȝ的危险趋?---q也是Z么h们在|络计算的趋势下Q用CORBA,DCOM和RMI来解决问题的原因。你应该考虑一下,把collection|于服务器端Qiterator攑֜客户端的意义Q然后你明?....

  Rod:Ted,我提到的"更多自由M用OO",q不是说所有地斚w用OO,当然Q分布式对象是很需要的。但重要的是Q不要把"企业应用"?分布式应?混ؓ一? 应用E序的内部结构应该尽可能的面向对?然后提供一个高层的接口对远E调用暴Ԍ理想状态下Q仅仅这个接口才可以攑ּ面向对象.(基本上像SDO--服务数据对象Service Data Objectsq样的解x案在q部分是很庞大的).所以在分布式对象徏模中Q在应用内部引入优秀的应用程序接?虽然破坏OO)是没有争议的。Spring和其他的IOC(inverse of control控制反{)容器Q不会在OO斚w讄障碍,而EJB没做到Q它大范围内C赖了EJB的接口和框架?/p>

  在我对于Spring的XML配置要比EJB复杂的部|描q文件简单易配置的评论后----Ted写到:公正地说,Rod--JSR 175 在简化部|描q配|?包括你的Spring的XML配置)斚w的所做的工作是有意义?而不是所?,在java5之前Q部|描q文件是一个必ȝQ很gh的事情吗Q不q的是,事实表明Q考虑到所有的可能性,q已l是最佳的解决Ҏ了?所有h都记得EJB1.0ӞZ对象的描q符)?/p>

  Rod:没错,JSR-175会在DD(Data Define数据定义)斚wq一步改?已经有所改善Q虽然注释被一再过度?不过那是另一个话题了).不错QDDs(数据定义文g)是必要的Q虽然很J琐Q这是java借用C#中属性集/注释的想法而来?但问题是,现在的EJB部v描述让h惊骇地冗长,差不多全在XML?而且一个标准的ejb-jar.xml部v描述文gq不够,通常需要两个。相反,Spring的配|文件短精悍,而且不需要额外的引用。当ӞEJB3.0不在q里讨论Q因为我惌论的是现在用EJB的方?直到2006或者JSR-220完成的时??/p>

     在Don的博客上Q我对他拿Springq行的测试表达了我的敬:

     Rod:因ؓ你的代码不是严重依赖于容器的Q所以可以方便的q行单元试Q比如用JUnit。这样一来,和过Ml的J2EE容器内测试方案比hQ提高了巨大的效率。你也可以在Spring容器上做集成试Q而不需要一个重量的J2EE应用服务?---不像其他应用服务器,Spring容器可以很快启动?/p>

  Don:我仅仅是说尽量少的依赖于容器QEJBq不是一个完全失败的技术,用OpenEJB容器效率q不会很低的Q至从我的试来证明?/p>

  Rod:我ƈ不确定像OpenEJBq种轻量U的EJB容器会是一个另人满意的解决Ҏ.我没有遇到有人用q它Q我自己也没用过。真正的EJB试LJ杂的,通常需要五分钟一个编?试循环?/p>

  Rod:比较一下Spring的Pet Store例子和EJBҎ的,可以发?在Spring的例子中Q很有冗余的代码,也就是说什么都不做的代?..

  比如Service接口,JNDI服务查询操作{等.在我接触的项目中,用一个Spring+Hibernate的؜合框Ӟ臛_能拿去EJBҎ?0%---20%的代?对于目的提交和后期l护是有重大意义?

  Don:我来说说我的观点,单ƈ不永q是好的Q不q的是,它仅仅代表简单,没有JNDIQ就{于说牺牲了理人员在不重启服务器的情况下,寚w|进行调整的需要。这可能对于一些客L应用来说不是太重要,但对于一?4*7的应用来讲就是个大问题了?/p>

  Rod:当然Q我说的用Springl结你代码中?服务接口QJNDI查找",q不是说真的不用JNDI,比如_你还是希望调用EJB,Spring可以l你创徏一个代理,装了JNDI查找啊?/p>

  在Pet Store的例子中Q我力L一个简单的架构--既然我们来讨论Pet Store,关键的就是,Spring和其他轻量的框架技术,l了你一个简易框架的选择。如果是传统的J2EE,你想创徏一个Pet Store,你最好是用Perl或?Net,或者抛弃J2EE的高U特性,只选择Servlet和JSP,所以有一个你自己的简易架构是必要的?/p>

  没有JNDIQ就{于说牺牲了理人员在不重启服务器的情况下,寚w|进行调整的需?,嗯,有多需要用JNDI重新配置应用的需?更好的解x案是JMX,但应用服务器q不了解你想做什么有意义的配|,同时Spring 1.2已经加入了对JMX的支?q将方便开发者去操作应用对象和配|。比如说Q改变一个JNDI的环境变量是我们很少要做的事?开发者通常会很准确地配|这些信息,来避免修改的痛苦?我同意,q可能是个不好的假设Q但实通常是这L)Q你如果想通过JNDI来改变某个|你已l知道何时来扑ֈ?{等?/p>

  Don:误住,EJB提供双机事务的支持,而Spring没有Q这一点让我不安,Spring失去了它的亮炏V?/p>

  Rod:Spring不会做或者很做双机事务,不知道怎么q定Spring失去它的亮点?Spring的事务层抽象是在事物{略的基上的一层,一个方案就是JTA,在这U方案下Q双Z务来自于应用服务器底层的支持Q而不是Spring.实际?JTA事物{略是我们最早就重视q实现的功能。我明白Q在一个无JTA支持的简单容器下Q丢弃一个落后的local和global事务~程模型是很有意义的.



Tom 2007-02-09 16:46 发表评论
]]>
路O漫其修远?向ְ上下而求?-spring学习日记http://www.aygfsteel.com/43880800/archive/2006/11/22/82901.htmlTomTomWed, 22 Nov 2006 14:02:00 GMThttp://www.aygfsteel.com/43880800/archive/2006/11/22/82901.htmlhttp://www.aygfsteel.com/43880800/comments/82901.htmlhttp://www.aygfsteel.com/43880800/archive/2006/11/22/82901.html#Feedback0http://www.aygfsteel.com/43880800/comments/commentRss/82901.htmlhttp://www.aygfsteel.com/43880800/services/trackbacks/82901.html

    先看了几天书,甚么aop,ioc 看的头晕D??领悟能力有限?...愣是没明?...但是坚定一个信?spring是?一定要?..特别是我q种停留在原始编E水q的Z学东西要被h仍了?做IT的真?

    ?动动手连q?比看书强点吧,|上搜烦了例子仿照做?hehe,现在好像"用户登陆"成了代替helloworld的标准例?甚么框架都是login....q好.搜烦C一个很好的blog,一个ssh的例?大侠步骤写的很详l?开始了我的模仿之\.......弟地址不敢保留,贴出来给大家׃nhttp://www.aygfsteel.com/oksonic/archive/2005/11/06/18370.html,希望和我一栯茫的虾c们也能获得一点点启示....
   
    模仿了这个例子N?出现了N多问?从搭环境,C些mistake,唉问题真多啊......

    好不Ҏ跑v来了,开始几天硬是没有明白spring在干甚么.感觉是接管了struts的action.别的一Ҏ觉没?看了看网?g好多人都感觉不到spring的存?不知道他在做甚么...好神奇啊...呵呵
   
    实在不行,再找找有甚么速成的没?后来看见appfus,又去看了几天....也是搞的應|懂懂...是发现他接口特别多,目录l构和我们不一?...
   
    今天又仔l看了看appfus的例?仔细整理了下他的思\,切的说是他的思想. 目的mvc,针对接口~程.
再看了看他的目录接口,好好理解了下.他目录分3大块,DAO,SERVICE,WEBAPP,Nq就是传说的mvc?
DAO,SERVICE里面又分2?一块是interface,一块是implement.DAO里面主要是对数据库的对象CRUD操作,他例子是用hibernate实现?SERVICE里面是对数据对象的逻辑处理,webapp里面主要是些转向,qo?action之类的view层的东西,他用的是struts..........而且每块都有basec被子类ȝ?减少重复代码,现在思\好像清晰了许?于是马上修改了下自己的demo的程序结?..感觉appfus的例子还真不?臛_在结构上很清?......而且都是针对接口~程,E序可扩展性很?l护h很容?如果要改逻辑,只要L换或者修改相应的实现cd行了.....

    回头又做了一遍那个login例子,在做配置文g的时候他老提C我一?lt;bean>有错?说是对应的类没有property对应对象的setter Ҏ....我郁闷了老半?我记得上ơ好像没有提C个错误吧........极度郁闷,想了一阉|Z一?Nq就是传说中的ioc?spring应该是要把name属性里面的对象注入到local对应的对象里面吧????但是不敢定,而且错误也每搞定,军_低声下气的问同事朋?19?,他说当然?我说那ؓ什么上ơ没有提C我q个错误?....他说错了是错了,没有甚么Z?搞的我郁闷了老板?回来自己吭哧吭哧的慢慢搞,?..............命苦?.......只好Ҏ提示加了setter getter ,?E序倒是passq了,,但是q个原因愣是每明?x,,了...以后再说?..后来l箋改进E序做试?加入hibernate验证用户登陆,?他竟然提C我开始的getterҎ错误,,仔细看了看红?怎么是不能重写一个final的方?......再回想下之前的问??原来问题出在q里.......Nq就是spring对hibernate支持很好的重要体C一??......ps:spring的HibernateDaoSupport装的还真是?减少了不代码操?saveOrUpdate(obj)可以了,呵呵....又发现spring的一个好?....

    书本上大力宣传的spring的AOP,IOC.......今天有了一点点感觉.对象的注?Ҏ法的拦截,对hibernate的良好支?装.渐渐让我感觉C真实的spring.....发现了spring的作?q样写程序思\q真是很清楚,面向接口的编E?spring的组?g让我有点点兴?自己的编E思想上升了不?...但是前方的\q是很遥q?特别是对我这U小?要学的还很多很多,.....路O漫其修远?向ְ上下而求?......新手h,老鸟毋笑

Tom 2006-11-22 22:02 发表评论
]]>
վ֩ģ壺 | Ӣɳ| | ѧ| | ½| | | | | | ǿ| ƽ| | | | ˮ| ɽ| Ԫ| ̨| | ³ľ| ӱ| | | ϰ| | ϽϽ| հ| | | | | | | | | | ں| | ϻ|