JavaEE和Spring如何相关/不相关?

Cur*_*ind 4 java spring spring-mvc java-ee

我是JavaEE和Spring Framework的新手.我很难理解如何只使用Spring Framework编写应用程序.我已经在互联网上看到,Spring Framework的目的是使企业级应用程序的开发更简单,而不是EJB开发(主要在EJB 2.x系列中).

使用JavaEE,我们有许多技术,如:1)EJB 2)JCP 3)JTA 4)JPA等.

在阅读Spring Framework时,我开始使用依赖注入,Spring AOP,Spring MVC(以及我正在阅读的其他人).

我很难理解如何使用Spring DI/AOP/MVC来制作成熟的企业应用程序?我从其中一篇帖子中读到,例如,对于事务管理,我们可以使用Spring自己的事务管理或使用JTA.我相信JTA是JavaEE的一部分,如果我们最终使用JavaEE的技术,那么Spring如何简化生活?

任何有助于我清楚这一点的答案都非常感谢.

JB *_*zet 9

Spring包含许多不同的部分,Java EE也是如此.其中一些是直接竞争对手,而对于其他人,Spring提供了Java EE组件的抽象层和/或Spring集成.

例如:

  • Spring MVC构建于servlet之上(它是Java EE的一部分),它与JAX-RS和JSF竞争
  • Spring核心(IoC,AOP)与CDI和EJB竞争
  • Spring事务处理只是现有事务机制(JPA,Hibernate,JDBC或JTA)之上的抽象层.
  • Spring-data-JPA是JPA之上的抽象层
  • Spring-JDBC是JDBC之上的抽象层

因此,对于使用Spring构建的典型Web应用程序,您至少会使用Java EE的组件:servlet,可能是JDBC或JPA.如果您需要消息传递和XA,您将使用JMS和JTA,但Spring将提供集成层.关于依赖注入,您不需要EJB和CDI,因为Spring直接支持相同的功能.