Spring从一开始就被开发为EJB的替代品,所以答案当然是你可以使用Spring代替EJB。
如果使用EJB有“优势”,我会说这取决于你团队的技能。如果你没有Spring的专业知识,也有很多EJB经验,那么坚持使用EJB 3.0可能是一个很好的举动。
从理论上讲,为支持 EJB 标准而编写的应用服务器可以从一个兼容的 Java EE 应用服务器移植到另一个应用服务器。但这意味着要远离任何和所有特定于供应商的扩展,这些扩展将您锁定在一个供应商中。
应用程序服务器(例如,WebLogic,Tomcat,JBOSS等)之间的弹簧端口很容易,因为它不依赖于它们。
然而,你被锁定在春天。
Spring鼓励良好的OO设计实践(例如,接口,层,关注点分离),即使您决定切换到Guice或其他DI框架,这些实践也有利于它们遇到的任何问题。
更新:这个问题和答案在2014年已有五年的历史。需要说的是,编程和应用程序开发的世界在那段时间里发生了很大的变化。
它不再仅仅是在Java或C#,Spring或EJB之间做出选择。使用vert.x,可以完全避开Java EE。您可以在没有应用服务器的情况下编写高度可扩展的多语言应用程序。
更新:现在是2016年3月。Spring Boot 提供了一种更好的方法来编写没有 Java EE 应用程序服务器的应用程序。您可以创建一个可执行 JAR 并在 JVM 上运行它。
我想知道Oracle是否会继续支持Java EE规范。Web 服务已经接管了 EJB。EJB 解决方案已死。(只是我的意见。
首先,让我说清楚,我不是说你不应该使用Spring,而是因为你要求一些优点,这里至少有两个:
EJB 3是一个标准,而Spring不是(这是一个事实上的标准,但这不是一回事),这在可预见的将来不会改变。虽然您可以将Spring框架与任何应用程序服务器一起使用,但Spring应用程序被锁定在Spring本身和您选择在Spring中集成的特定服务中。
Spring框架位于应用程序服务器和服务库之上。服务集成代码(例如数据访问模板)驻留在框架中,并向应用程序开发人员公开。相反,EJB 3 框架被集成到应用程序服务器中,服务集成代码被封装在接口后面。因此,EJB 3 供应商可以通过在应用程序服务器级别工作来优化性能和开发人员体验。例如,它们可以将 JPA 引擎与 JTA 事务管理紧密结合。另一个例子是集群支持,它对 EJB 3 开发人员是透明的。
EJB 3并不完美,它仍然缺乏一些功能(例如,注入非托管组件,如简单的POJO)。
-
如何使用Java中的RESTful Web服务获取远程/客户端IP地址? 我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。 从这个请求.getRemoteAddr()使用这个。 但是我不能使用getRemoteAddr()。因为我的请
-
从包含大量文件的zip文件中提取1文件的最快方法是什么? 我尝试了但它们也缺少一些东西。 LZMA SDK不提供一种如何使用的文档/教程,这非常令人沮丧。没有 javadoc。 虽然7z jbinding没有提供一种简单的方法来只提取1个文件,但是,它只提供了提取zip文件
-
输入/输出流在销毁时是否关闭? Java 中的 InputStreams 和 OutputStreams 是否在销毁时关闭()?我完全理解这可能是不好的形式(特别是在C和C++世界中),但我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load
-
Java 程序中的字符串大小是否有任何限制? 我有一个字符串定义为 字符串 xx 我可以分配的字符数是否有任何限制? 2) 我正在将用户输入分配给此字符串 xx。70%的人只说一个字。有时他们给出一个大句子,所以想知道可
-