技术开发 频道

Spring VS EJB 3 的若干认识误区



【IT168 技术文档】

在开源领域,Spring开源框架已成为企业应用开发中使用最多的开源框架。Spring框架的优秀不但表现在其优雅的底层设计、使用方便快捷、面向工作实践、超强粘合能力等方面,另外一个不可忽视的方面是Spring拥有一个世界优秀且活跃的技术开发团队。随着Spring的流行,于是,大家开始对比Spring与另一种流行的框架组件EJB。目前网上关于Spring和EJB的争论颇多。很多架构师认为Spring会替代EJB,也有架构师认为Spring是开源的东西,是不成熟且无法和商业解决方案媲美的框架,因此,在Spring与EJB的对比过程,有若干对Spring的片面认识。而本文希望通过对这些误区的分析,给Spring一个原本的认识与理解。
 
一、        前言
EJB 3.0框架是JCP定义的并且被所有主流J2EE提供商支持的标准框架。EJB 3.0规范的发布版本目前已经有开源的和商业的实现,如JBOSS和ORACLE。EJB 3.0大量使用了JAVA注解(Java annotations,是JDK1.5提供的新功能)。
EJB最初的设计思想考虑的是为分布式的应用服务的,分布式是针对大型应用构造的跨平台的协作计算,EJB最初的目的就是为这种计算服务的。但是软件发展到目前为止,大多数应用不需要采用分布式的解决方案,因此用EJB显得太臃肿了。Spring的出现恰恰为了解决这个问题。举个例子来说,EJB就是导弹,专门设计为打高空飞机。但是现在发现飞机不多。于是将它用来对付步兵,这个实在太糟糕了。这个时候有人发明了狙击步枪(Spring),发现对付步兵太好用了。
Spring框架是一个广受欢迎的但是非标准的开源框架。它主要由Interface21公司开发和控制。Spring框架的体系结构是基于注射依赖(DI)模式。Spring框架使用了大量的XML配置文件,它可以独立应用,或者在现有的应用服务器上工作。
这两个框架有着一个共同的核心设计理念:它们的目标是为松耦合的POJO类提供中间件服务。框架通过在运行时截取执行环境,或将服务对象注射给POJO类的方式,将应用服务和POJO类“连接”起来。POJO类本身并不关注如何“连接”,而且也很少依赖于框架。
这样,开发者可以将注意力集中在业务逻辑上,可以对他们的POJO类进行与框架无关的单元测试。并且,由于POJO类不需要继承框架的类或实现框架提供的接口,开发者可以在更加灵活性的基础上构建继承体系,和搭建应用。
尽管有着共同的理念,但这两个框架采取了不同的方式来提供POJO服务。由于已经出了大量的比较Spring和EJB3.0的文章。但发现,随着Spring的发展,其中对Spring的认识难免有失偏颇的地方,因此,本文将考察它们之间几个关键的认识上的误区进行分析。
0
相关文章