4. 功能性对比
4.1 IoC容器,AOP能力
在IoC的能力Spring要略强一些,但是在EJB3中可以完全用Annotation方式进行注入,在开发上要简单很多,对于一些相对比较固定的注入,采用Annotation更好,而对于一些可能需要经常变动的注入,XML更加灵活,EJB3刚好提供了这样的两种解决方案。如果你已经患有XML恐惧症,那么EJB3无疑将给您以解脱。
同时,EJB3组件中,支持多种方式注入,比如依赖于名称、接口或者JNDI名,另外还支持使用@PersistenceContext注入EntityManager,@Resource注入服务器资源,如EJBContext、TimerService等,而一些Annotation已经成为JDK6的一部分,将来可能直接被JDK支持。
AOP方面,如果您需要彻底的AOP,并且在Spring中集成了AspectJ,那么EJB3自然无法比拟,但是如果您的项目以够用为原则,只需要一般方法拦截意义上的AOP,EJB3提供的各种回调方法应该可以满足您的要求了。
4.2 事务处理
EJB的看家本领,Spring也通过提供TransactionTemplate以及集成第三方事务处理器来支持JTA,都支持申明式事务,可以BMT,CMT,但无论如何,移植的器官总也没有自身长的好吧。
4.3 分布式能力
一般使用Java EE体系的公司都认为这是EJB的最大长处,但是实施并不如想象那样,一来绝大多数都是Web应用,依赖Web提供的分布式能力已经可以满足90%的需要了,二来大家基本上都是Web容器和EJB容器整体部署,EJB组件的分布部署少之又少。当然如果您需要Web层和应用层分开部署,那么Spring一定不在你的考虑范围之内了。
4.4 Cluster能力
Cluster也是EJB的传统优势,但是老师说,能够发挥EJB集群优势的地方并不多,因为即使项目中采用了EJB,一般也采用Stateless SessionBean,而使用HttpSession Cluster,既然如此,无论EJB还是Spring,大家都是平等的。当然,如果您正在构建一个大型的应用,对集群的能力要求非常高,比如需要事务级的Cluster,而且还有分布式的需求,那么估计没有多少因素会让您考虑Web Server + Spring的架构了。
4.5 Web Service
EJB3中的Web Service和EJB组件集成得如此之好,使用起来再简单不过了,如下面实例所示,JAX-WS也将逐步成为Java Web Service事实标准;至于Spring可以实现各种基于Http的远程调用方法,其优势并不明显。
4.6 集成第三方框架
如果需要集成第三方框架的时候,估计您需要Spring了,当然前提是Spring 已经给出很好的集成方案;而如果采用EJB,则需要视特定的应用服务器了,推荐当类库来用,或者使用context listener来启动,是在不行,只能基于特定的应用服务器来进行集成,一般来说,应用服务器均提供了JMX集成能力。
5. 总结
纵观人类历史,官方过于强势,则必然官逼民反;而民间力量过于强大,社会必将不稳定,这都是我们不愿看到的,在技术世界里也一样。对于EJB3和Spring这两种方案,Spring现在处于压倒性的优势一方,希望EJB3的出现,一来能为官方挽回一些失去的领地,二来也能继续引发更多的探讨,不再拘束于一家之言,只有百家争鸣的环境,才能让开发人员和架构人员对企业应用的构建认识得更加完善,所以最好的方式是EJB3和Spring互相促进,和谐发展。
期待一个轻量的真正以开发需求为中心的EJB3应用服务器的出现,为疲软的EJB市场注入新的活力!
相关推荐
EJB3,Spring,Struts2整合
我是一个EJB3.0的新手 ,经过几天的搜索资料和自己的许多次测试,终于实现了ejb3、spring、struts2的整合,在这里写明一下简单的实现过程,希望对新入门的网友有所帮助,也请高手们不要拍砖,多多提出您的意见,在此...
EJB3.0和Spring比较
spring与ejb.pdf 详细讲述spring 与ejb
ejb3+spring+struts实现简单银行系统
《JavaEE实用开发指南:基于Weblogic+EJB3+Struts2+Hibernate+Spring》-- part2/3
这个demo,实现了ejb+spring的集合。ejb主要是消息驱动bean和会话bean。
struts2+spring+ejb3源代码(完整版)
spring和EJB3的一些包,包括文档,基本上是英文的
spring集成ejb
ejb3+spring+struts实现简单银行系统源码整理
JPA学习笔记-EJB-06JPA+Spring使用经验。
pdf书籍加源代码 EJB3的三本好书第二本,最好的介绍ejb3的书,看过之后,其他的...2. EJB3 in Action 2007联接http://download.csdn.net/source/1865636 3. Mastering EJB3联接http://download.csdn.net/source/1865654
很详细的EJB&Spring;对比。。。不了解的可以下载看看。本来就是靠它搞懂的。才拿来分享。
ejb3中文版
精通JSF-基于EJB Hibernage Spring整合开发与项目实践代码.part1.第3部分。三部分全下完再解压第一部分!
java最新面试题 java struts servlet spring ejb
作为轻量级的容器,Spring常常被认为是EJB的替代品。我们也相信,对于很多 (不一定是绝大多数)应用和用例,相对于通过EJB容器来实现相同的功能而言, Sping作为容器,加上它在事务,ORM和JDBC存取这些领域中丰富的...
pdf书籍加源代码 EJB3的三本好书之三,也很不错的一本ejb3的书籍,是英文版,...2. EJB3 in Action 2007联接http://download.csdn.net/source/1865636 3. Mastering EJB3联接http://download.csdn.net/source/1865654