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框架基本概念