EJB 3.0和Spring的抉择

EJB 3.0和Spring在传递POJO服务时采用了完全区别思路方法这使得开发者在实施POJO时不得不进行艰难选择

对于POJO开发存在着两种框架EJB 3.0和Spring这两个框架组件核心设计理念是相同:把中间件服务传递给松散耦合简单旧式Java对象(POJO)这些框架组件通过在运行时截取执行内容或向POJO注入服务对象把应用服务和POJO捆绑在POJO本身不关心捆绑过程并且对框架组件几乎没有依赖其结果是开发者可以聚焦于业务逻辑个人可以在没有框架组件情况下测试他们POJO此外由于POJO不需要从框架组件中继承或实现框架组件接口开发者建立继承结构和构建应用时候都有高度灵活性

但是尽管两者设计理念是相同它们传递POJO服务时却采用了完全区别思路方法

注入方式

Spring仍然是依赖XML来注入到POJOXML写起来比较麻烦虽然流行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服务如JCAJMX都结合很好而缺点也正是结合太紧密不够灵活

对Web框架支持度

Spring在这方面要优于EJB3.0几乎所有开源项目都有这个特性——对现有流行技术支持度都非常好Spring可以灵活地集成各种Web框架和模板语言另外自身也提供了相当强大Spring-MVC框架而且可以很好结合spring webflowwebworkstruts等同时随着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的间进行切换(除非使用了应用服务器提供专有组件)

Tags: 

延伸阅读

最新评论

发表评论