首页 / 知识
关于java:我应该在业务层中使用EJB3还是Spring?
2023-04-15 16:50:00

Should I use EJB3 or Spring for my business layer?我的团队正在开发具有Web前端的面向服务的新产品。 在讨论我们将使用哪些技术时,我们决定运行JBoss应用程序服务器,Flex前端(可能使用Adobe AIR进行桌面部署)和Web服务以连接客户端和服务器。 在将哪种服务器技术用于我们的业务逻辑方面,我们陷入了僵局。 最大的争论是在EJB3和Spring之间,我们最大的担忧是可伸缩性和性能以及代码库的可维护性。 这是我的问题:
基于Performance,EJB3和Spring之间不会有太大区别。我们选择Spring的原因如下(问题中未提及):
显然,EJB3和Spring之间的差距比以前小得多。也就是说,EJB3的缺点之一是您只能注入到bean中,因此最终可以将组件转换成不需要的bean。 现在关于单元测试的争论已经不那么重要了-EJB3显然被设计为更容易进行单元测试。 上面的兼容性参数也无关紧要:无论您使用EJB3还是Spring,您仍然依赖于第三方提供的事务管理器,JMS等实现。 但是,对我来说,摇摆不定是社区的支持。去年从事EJB3项目的人们很少使用它并谈论他们的问题。无论是对是错,Spring在企业中无处不在,尤其如此,这使得查找与您要解决的问题相同的人变得更加容易。
支持或反对EJB3 vs Spring的论据是什么? 我认为Spring与Java EE规范相比具有补充优势。随着曾经是Spring独有的功能继续融入该规范,许多人会争辩说EJB 3为大多数内部业务应用程序提供了"足够好"的功能集。
我希望每个陷阱有什么陷阱?
在哪里可以找到良好的基准信息? 我肯定会在春季推荐EJB3。我们发现它更加精简,更易于编码,并且得到了更好的支持。我过去使用过Spring,发现它非常令人困惑,并且没有EJB3(或我想在今天结束时的JPA)那样好的文档 您的Session Bean可以很容易地作为Web服务公开,可以向Flex前端公开。 会话bean很容易在方法或类级别锁定,以根据需要分配角色和类似的东西。 关于春天,我只能说几周,所以我不能说太多。但是我对此的总体印象非常差。这并不意味着它是一个糟糕的框架,但是我们的团队在这里发现EJB3是持久性/业务层的最佳选择。 我倾向于使用Spring而不是EJB3,但是我的建议是无论采取哪种方法,都尽量坚持编写POJO并在可能的地方使用标准注释,例如@ PostConstruct,@ PreDestroy和@Resource之类的JSR注释,它们都可与EJB3一起使用或Spring,因此您可以选择自己喜欢的框架。 例如您可以决定某个项目使用Guice代替IoC。 如果要在Web应用程序中使用请求前注入,则可能会发现Guice依赖注入比Spring快很多。 会话bean主要归结为依赖注入和事务。因此,EJB3和Spring确实有点相似。 Spring的优势在于更好的依赖注入和对JMS之类的更好的抽象
我过去使用过非常相似的架构。 Spring + Java 1.5 + Actionscript 2/3与Flex Data Services相结合,使编写代码变得非常容易(而且很有趣!)。 关于您的问题:
我建议阅读专家的回复:Mark Fisher的回应:EJB 3和SPRING比较分析。阅读注释以查找Reza Rahman的评论(EJB 3.0)。 支持spring的另一件事是,那里的大多数其他工具/框架都更好地支持了与spring的集成,其中大多数也都在内部使用spring(例如activemq,camel,CXF等)。 它比EJB3更成熟,并且有更多的资源(书籍,文章,最佳实践等)和经验丰富的开发人员。 我认为EJB是一个很好的组件技术,但不是一个很好的框架.Spring是迄今为止可用的最佳框架。因此从框架的意义上讲,我应该将Spring视为JEE的最佳实现,我的建议是在每个框架中都使用spring该项目使我们可以灵活轻松地与任何组件技术集成。 |
最新内容
相关内容
linux服务器分区命令?
linux服务器分区命令?,系统,管理,信息,设备,时间,命令,基础,首次,平均,情况,linux系统格式化分区用哪个命令Linux的磁盘格式化命令是“mkfs”,vim运行linux命令?
vim运行linux命令?,系统,工作,信息,地址,命令,标准,时间,情况,工具,基础,linux系统中如何进入退出vim编辑器,方法及区别先按ESC,再输入冒号,在输实施业务需要的linux命令?
实施业务需要的linux命令?,工作,系统,地址,信息,业务,目录,命令,标准,管理,功能,Linux常用命令linux系统常用操作命令如下:ls:全拼list,功能是列linux服务器上传命令?
linux服务器上传命令?,服务,软件,平台,数据,工具,系统,手机,电脑,设备,官网,从linux服务器中下载或上传文件您要问的是为什么linux服务器一直linux下并行运行命令?
linux下并行运行命令?,系统,服务,工作,命令,环境,网络,暂停,文件,脚本,参数,linux多个用户同时执行命令会冲突吗不会冲突。解释:用户登录linuxlinux网络服务器命令?
linux网络服务器命令?,地址,网络,系统,名称,信息,工具,状态,中心,灵活,基础,linux系统下查看网关命令。linux查看网关命令,为您提供linux查看网linux下并行运行命令?
linux下并行运行命令?,系统,服务,工作,命令,环境,网络,暂停,文件,脚本,参数,linux多个用户同时执行命令会冲突吗不会冲突。解释:用户登录linuxlinux服务器基本命令?
linux服务器基本命令?,地址,系统,设备,网络,工作,标准,信息,电脑,命令,密码,linux如何查看ip地址命令(linux如何查看ip地址)1、目录方法1:使用Ulinux服务器下载命令?
linux服务器下载命令?,服务,密码,系统,档案,工具,网络,公共,百度,地址,认证,linux下lftp连接ftp服务器上传下载命令连接ftp服务器 格式:ftp [holinux命令行后台运行?
linux命令行后台运行?,服务,状态,标准,暂停,命令,后台,连续,地方,工作,方法,linux中如何把一个进程放在后台运行可见,nohup 的使用是十分方便的脚本运行linux命令?
脚本运行linux命令?,系统,环境,工具,工作,位置,底部,代码,发行,官网,终端,linux下shell脚本命令PS1 主提示符,在特权用户下,默认的主提示符是#,在linux进程运行命令?
linux进程运行命令?,系统,工作,状态,地址,信息,进程,基础,命令,管理,软件,linux常用命令有哪些1、linux系统常用操作命令linux系统常用操作命