- 注册时间
- 2011-10-23
- 最后登录
- 2011-10-28
- 阅读权限
- 70
- 积分
- 1058
- 精华
- 0
- 帖子
- 352
 
升级   2.9%
|
EJB 3.0跟Spring在传递POJO服务时采取了完全不同的方式,这使得开发者在实行POJO时不得不进行艰巨的抉择。
对POJO的开发,存在着两种框架EJB 3.0和Spring,这两个框架组件的中心设计理念是雷同的:把旁边件服务传递给松散耦合的简单旧式Java对象(POJO)。这些框架组件通过在运行时截取履行内容或向POJO注入服务对象,把应用程序服务与POJO捆绑在一起。POJO本身不关怀捆绑的进程,并且对框架组件简直不依赖。其成果是,开发者可以聚焦于业务逻辑,个人可以在没有框架组件的情况下测试他们的POJO。此外,因为POJO不须要从框架组件中继承或实现框架组件接口,开发者树立继续构造和构建应用程序的时候都有高度的灵巧性。
但是,只管两者的设计理念是相同的,它们传递POJO服务时却采用了完全不同的办法。
注入方法
Spring依然是依赖XML来注入到POJO的,XML写起来比拟麻烦,虽然风行的IDE都有图形化的编纂界面,但仍是很难操作,同时Spring使用XML来阐明配置申明性服务,也会发生一个漫长的配置文件。这些配置文件必须在运行时才干晓得其中的过错,哪怕是一个大小写的问题。因此Spring目前也在斟酌如何简化XML配置文件。
EJB 3.0使用Annotation,这要比Spring简略明了,但其功能也受到必定的限度。Spring基于XML配置的依赖注入语法庞杂,但功效却十分强盛。可以将任何一个POJO注入到另一个POJO,包含运用程序中自定义的那些POJO。
疏松耦合度与服务集成
Spring与应用服务器采用松散耦合,作为Spring设计的核心理念,这样加强了Spring的灵活性,但同时也增添了开发的复杂度,因为如斯一来,开发者就必须弄明白Spring对应的应用服务器的。而事实上,这些与应用服务器的关系代码对于开发者大都是不用要的,开发者往往只要要关联业务逻辑就可以了。使用Spring的声明式事务服务来管理Hibernate事务,必须在XML配置文件中明白的配置Spring的事务管理器(TransactionManager)和Hibernate SessionFactory对象。
EJB3.0框架与利用服务器结合较紧密,服务被集成封装,暗藏在EJB接口后面。由于EJB3.0自身就是J2EE尺度的一部份,因而,它与其余J2EE服务如JCA,JMX都联合的很好。而毛病也恰是结合太严密,不够机动。
对Web框架的支持度
Spring在这方面要优于EJB3.0,多少乎所有开源项目都有这个特征――对现有的流行技巧支持度都无比好。Spring可以灵活地集成各种Web框架和模板语言,另外本身也提供了相称壮大的Spring-MVC框架,而且可以很好的结合spring webflow,webwork,struts等。同时跟着Spring Web Services 1.0正式颁布,Spring对web service开发现显增强了,这无疑使Spring喜好者开发者更加热衷于Spring。
EJB3.0标准集成JSF,但JSF目前并不成熟,也没有得到预期的后果。同时EJB3.0对其他web框架支持也比较差。
开源与标准标准
Spring框架是开源项目,但不是标准的。Spring的接口配置文件描写都是私有的。固然,Rona 宣称Spring完整支撑能够不使用Spring的特殊专有服务,然而实际情形往往不是这样的。因此,一旦应用了Spring的特别服务,那么就绑定到了Spring框架上了。例如,假如使用它的治理服务,则必需使用相应的Spring私有的API。而且,Spring的发展完全依附于Spring开源名目,这使得它的支持力度也不够。
EJB3.0是完全公然的规范标准,它本身是J2EE标准的一局部,因此得到了良多厂商的支持。例如,JBoss在EJB3.0刚出来时,就发布其新的版本支持EJB3.0的服务器。这样基于EJB3.0的程序就可以比较轻松地在WebSphere、WebLogic以及JBoss之间进行切换(除非使用了应用服务器供给的专有组件)。 |
|