6 个答案:
答案 0 :(得分:16)
虽然你的问题表明Spring和Java EE是两回事,但事实上并非如此。您可以使用许多Java EE组件,如
用于Spring MVC的servlets和JSP,
春天DAO的
JTA for Spring security
Spring在Java EE堆栈中替换的唯一主要内容是EJB。除非你坚持使用EJB,否则Spring应该是可行的方法。此外,Spring还为Web服务和其他内容提供内置支持。
同时查看以Spring为基础的Groovy和Grails。
最后我要说的是,功能明智都是一样的。它是代码(Java EE)与配置(Spring),实际上是一个偏好的问题。
答案 1 :(得分:7)
我的所有评论都应该是一丝不苟。自1.0版以来,我一直是Spring用户;我从未在生产中使用任何版本的EJB - 从1.0到现在。
Spring对我很有帮助:我想在Java EE中应用的任何技术都可以在Spring中使用。我已经使用了Web服务,LDAP,消息传递和portlet模块以及来自持久性,远程处理和Web MVC的常见嫌疑人。代码非常好。我发现强调分层,编码到接口,依赖注入和面向方面的编程有益于我的设计。
事实是,您可以选择其中之一并使其发挥作用。在这一点上没有什么优势或劣势,因为EJB 3从Spring中获得了很多,它们应该是相似的。我不能说从个人经验来看,因为我没有使用过EJB 3。
我的雇主或客户都没有要求EJB 3.我市场上的人正在使用Spring或.NET通过HTTP与Web服务进行通信。
EJB要求您使用RMI或CORBA作为网络协议。我相信基于HTTP的协议 - 无论是RPC-XML,SOAP还是REST--都会获胜,因为简单和开放通常都可以。
没有人可以预知未来,所以工作前景建议毫无价值。您当地的市场情况可能与我的不同。你可以对冲你的赌注并学习两者。无论你选择哪种,几乎可以肯定你将来必须学习一些新的东西,它们不是EJB或Spring。所以选择一个并做好准备改变。
答案 2 :(得分:1)
根据我从单纯标准Java学习Java EE / Web编程的个人经验,我试图直接进入某些框架,而没有清楚地了解Java EE / Web的工作原理。虽然如果使用像Spring这样的框架并不是所有的Java EE都是相关的,我认为掌握一些底层技术是个好主意。你不必过火,但了解一些基础知识是个好主意。
当库中没有正确配置某些内容(如Spring)时,有时他们会对用户的某些部分进行一定程度的了解。在经历了一些基本问题后,我花了一些时间回到基础。之后,我能够更好地处理框架。
我只是放弃了EJB路由。
答案 3 :(得分:0)
Spring和Java EE 6在某种意义上是相似的。他们并行前进。我认为如果你学习Java EE 6然后(如果想要/需要)学习Spring会更好。
在Java EE中,Java持久性非常适用于不同的数据库查询目的。
答案 4 :(得分:0)
没有理由在新项目上使用Spring。有很多应用程序仍在使用它。你应该在Java EE之前学习Spring。 Spring曾用于简化开发。此时虽然Java EE更易于使用,但您也可以摆脱Spring依赖关系。
答案 5 :(得分:0)
首先请理解Java EE不是单一规范,而是一组规范。而Spring是一个框架。
Spring与许多Java EE规范(包括EJBs)完美集成。
使用规范的想法是使您的应用程序可以在本规范的不同实现之间移植。不幸的是,这在现实生活中并不能很好地发挥作用
现在关于Hibernate。再说一遍:这是一个框架。 Java EE包含一个名为JPA的规范。 Hibernate实现了JPA。您可以找到其他实现。因此,如果您正在使用其他实现,则不需要Hibernate。
现在,您可能想知道底线。我真的没有。如果你正在学习Java,你知道的越多,它就会越好。
如果您正在寻找启动新Web应用程序的技术,我相信最好将Spring与servlet容器(servlet容器是Java EE的一部分!)(如Jetty或Tomcat +)一起使用以使用JPA(Hibernate实现)坚持不懈。