Java EE 和 Spring 框架之间的区别 [关闭]

Posted

技术标签:

【中文标题】Java EE 和 Spring 框架之间的区别 [关闭]【英文标题】:Difference between Java EE and Spring framework [closed] 【发布时间】:2011-05-28 07:14:46 【问题描述】:

我正在努力了解 Java EE 和 Spring Framework 之间的区别。谁能帮我解决这个问题。

【问题讨论】:

【参考方案1】:

Java EE 是功能齐全的企业应用程序框架堆栈的标准、官方规范。包括对象关系映射、安全性、Web 应用程序、数据库连接、事务......

除了 Java EE 规范之外,还有 JavaEE 实现/应用服务器,例如:JBoss、Glassfish、WebSphere、Weblogic。

另一方面,Spring 是一个框架,它在 Java EE 规范中做了很多工作,但以它自己的形式。他们不遵循 Java EE 规范和 API。但它们确实包括 Web 框架、事务管理、安全性和 Java EE 提供的其他几个解决方案。

【讨论】:

【参考方案2】:

Java EE:

    Java EE 行业认可的基于标准 API 的框架 主要基于注释和 CDI 用于 Web 开发的 JFC MVC 框架 处理 DB 操作的 JPA 规范 带有实现的 JTA API EJB 容器和基于 POJO 的实现 Oracle 许可证

春天:

    基于 IOC 和 AOP 基于 XML 配置(现在他们正在利用注释) 使用 Spring DAO 框架(基于模板设计模式)连接数据库 提供抽象层以支持各种 JTA 实现供应商 与各种 Java 供应商集成以支持不同的功能,例如 struts 等 提供端到端平台来构建使用 DI 和 AOP 实现松散耦合的 Web 应用程序 开源许可

【讨论】:

请注意,Java EE 实现,如 JBoss、TomEE 等不附带“Oracle 许可证”,但有像 GPL 或 Apache 这样的普通开源许可证。【参考方案3】:

Java EE:

    应用服务器供应商遵循的 Sun/Oracle 标准 基于企业 Java Beans 由许多供应商实施:BEA/Oracle、WebSphere、JBOSS、Glassfish 等。

春天:

    不是标准;它是 Rod Johnson 的创意,由 Spring/VMWare 实现。 不基于企业 Java Bean;这是一个 POJO 模型。如果您希望使用 EJB,可以管理它们,但不是必需的。 Spring 以外的任何供应商都没有实现。

EJB 3.1 从 Spring 中吸取了很多。现在它包括依赖注入、方面的一种形式和 JPA。 EJB 3.1 比 EJB 2.0 更接近 Spring。

【讨论】:

我不完全同意你的回答。说 Java EE 基于 EJB 有点牵强。是的,EJB 在 Java EE 中扮演着重要的核心角色,但它不是一项基础技术。 此外,EJB 3.1 没有从 Hibernate 中获取任何东西。 JPA 从 Hibernate 中获取了很多东西(Hibernate 从 TopLink 中获取了很多东西,TopLink 比它早了很长时间)。 EJB 3.1 使使用 JPA 变得更容易,但它绝对不包括 JPA。 最后,EJB 3.1 确实从 Spring 中汲取了一些东西,Java EE 社区应该永远感谢 Rod。编程模型现在非常相似,主要在细节上有所不同。 EJB 2.0 bean 与 Spring bean 完全相反。最近,Spring bean 正在追随 EJB bean,它开始使用 XML 上的注释和配置上的约定。 Spring 是否也会遵循 CDI 的类型安全注入还有待观察(请注意,CDI 是 Java EE 中非常重要的 API,它本身并不基于 EJB,但只能与之集成)。【参考方案4】:

我在这里 Frameworks for Layering reusable Architectures 提供了 Java EE 的概述

这也包含一个与 Spring 的小比较,可能与这个问题有关。

【讨论】:

以上是关于Java EE 和 Spring 框架之间的区别 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Java学习路线,Java SE,EE,ME的区别,SSM框架基本概念

三大框架有何区别

spring mail和Java Mail的区别

Java SE和Java EE之间的区别[重复]

Java SE 和 Java EE 之间的主要区别是啥? [复制]

Spring框架入门