Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 721|回复: 0

EJB 3.0和Spring的抉择

[复制链接]

该用户从未签到

发表于 2011-9-14 16:38:06 | 显示全部楼层 |阅读模式
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之间进行切换(除非使用了应用服务器提供的专有组件)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-4 01:48 , Processed in 0.424263 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表