Java EJB3带来了什么特性,以及EJB3如何与Spring框架相结合?

Java EJB3带来了什么特性,以及EJB3如何与Spring框架相结合?,java,spring,ejb-3.0,ejb,Java,Spring,Ejb 3.0,Ejb,我从来没有在ejb上工作过,当我开始编程Spring时,我的所有项目都只使用Spring,最近我接受了一次采访,他们想要了解EJB3.0,因此我想知道EJB3.0与Spring框架的关系如何,以及为什么现在有很多项目使用Spring框架而不是EJB3.0,请不要在这里引用我的话,因为我可能会错 如果能从实用的角度解释使用一种方法和另一种方法的区别和好处,我将不胜感激 注意请不要给出wiki链接作为答案,因为我想了解这两种技术的实际组合 更新还有什么是开始学习EJB3的最佳方式,推荐的书籍和在线教

我从来没有在
ejb
上工作过,当我开始编程
Spring
时,我的所有项目都只使用
Spring
,最近我接受了一次采访,他们想要了解
EJB3.0
,因此我想知道
EJB3.0与Spring框架的关系如何,以及为什么现在有很多项目使用
Spring框架而不是EJB3.0
请不要在这里引用我的话,因为我可能会错

如果能从实用的角度解释使用一种方法和另一种方法的区别和好处,我将不胜感激

注意请不要给出wiki链接作为答案,因为我想了解这两种技术的实际组合


更新还有什么是开始学习EJB3的最佳方式,推荐的书籍和在线教程是什么?

我想说唯一的主要区别是Java EE 5和6是一个标准。它吸收了Spring和其他人的思想,并从中创建了一个标准。与旧的EJB相比,EJB3是日以继夜的。所有EJB都是POJO,依赖项由容器注入。所有这些不同的接口和从主界面手动创建实例都消失了。如果你已经对Spring做了很多工作,那么你可能最多需要几个小时来学习。如果您正在开发web应用程序,您还需要了解JSF


我从来没有用旧的EJB做过真正的应用程序,因为这太痛苦了。EJB3我一直在使用,因为它很轻松。如果您想尝试最新的一切,请获取glassfish的副本,我认为它仍然是唯一一款经过JavaEE6认证的服务器。

EJB是一项非常古老的技术(约1999年)。然而,在标准的第3版之前,使用起来非常不方便。Spring作为一种理智的替代品而广受欢迎,它提供了一些相同的核心特性(声明性事务和安全性)以及一些新特性(依赖注入,AOP)。它还与许多其他技术(如Hibernate)很好地集成

然而,从V3.0开始,ejb(或者更确切地说,ejb是其一部分的整个javaee平台)得到了重大的改进,并且变得更易于使用。此外,许多由各种框架(包括Spring)流行的特性被制成官方标准并添加到JavaEE中


目前,Java EE平台与Spring相比在受欢迎程度上有了很大的提高,因为它们在易用性和特性上都差不多,Java EE的优势是基于开放标准,大多数组件都有多种实现。同时,在我看来,Spring在与其他框架(这曾经是它的强项)集成时,似乎很难跟上最新的技术水平。

在依赖注入和MVC架构方面,Spring在灵活性和易用性方面都优于Java EE 5,尽管如其他人所说,JavaEE5(EJB3)是对JavaEE/EJB以前版本的巨大改进。有了JavaEE6,我相信JavaEE在DI/新CDI(JSR-299)实现和MVCW/JSF2.0中都超越了Spring


Oracle在线教程是初步的,但却是学习JavaEE的良好起点。学习JavaEE6中DI的一个很好的资源是Reza Rahman的系列文章

,因此不了解EJB或不使用EJB会对学习EJB3产生任何影响吗?如果可以,尽量不要使用jsf。现在关于它几乎没有什么标准,你最终会被简单地锁定。@Steven:你能说得更具体一点吗?我现在正在启动一个JSF项目,在我看来,基本的JSF实现是标准化的,并且实现得非常好。的确,组件库试图通过新特性来区分它们自己,使用这些特性当然会将您与该库联系在一起。我想说,没有使用旧的EJB将有助于学习EJB3。这是完全不同的,所以试图了解它与旧东西的关系只会让你慢下来,实际上,我正试图将EJB3与Spring进行比较,看看我是否能在堆栈和一些基础知识之间找到共同点,这将帮助我开始理解EJB3technology@Rachel:EJB3 dpendency注入是基于注释的,使用XML配置作为后备方案。它使用JSR-250注释和一些特定于EJB的注释。实际上,EJB3中的几乎所有内容都是基于注释的,并将XML配置作为后备方案。我相信这是受Spring启发的,所以应该很熟悉。您是否介意详细解释一下您所说的“在我看来,Spring在与其他框架集成时,似乎无法跟上最新的技术水平?”这是一个非常笼统的说法,是什么给你留下了这样的印象?@kdonald:例如,最新的Spring版本默认与Hibernate 3.3.1进行了集成,这已经超过2年了。@kdonald:这就是Spring的“我们将为你做集成”方法的问题所在—它直接导致了一个更新的跑步机。Java EE方法是“让我们定义一个标准,并通过坚持标准API进行集成”——这不是每个人都能做到的,并且会导致其自身的限制,但肯定是更具可扩展性的。我无法理解,JEE 6在MVC体系结构上超越了JSF?我过去没有使用过JSF,因此也没有清楚地理解这一点,你能更明确地阐述一下吗?JSF是一种组件技术,所以从某种意义上说,它一直是一种比Struts、Spring MVC等请求驱动框架更现代的方法。但JSF也从一开始就受到了问题的困扰——主要是复杂性问题。有了JSF2.0,他们似乎终于做对了——主要是因为他们大量借鉴了Seam。看着吉恩