EJB和Spring都是用来开发企业应用程序的。但它们之间存在着一些差异。因此,在这篇文章中,我们试图涵盖所有这些差异。

企业Java Bean(EJB)

EJB是企业Java Bean的缩写。它是一个服务器端的软件组件,概括了一个应用程序的业务逻辑。EJB容器为网络相关的软件元素提供运行环境,包括计算机可靠性、Java Servlet生命周期(JSL)管理、交易程序和其他网络服务。为了运行一个EJB应用程序,我们需要一个应用服务器,如Jboss、Glassfish、Weblogic、Websphere等。它可以执行生命周期管理、对象池、事务处理、安全等。有三种类型的EJB:

会话Bean
会话Bean包含业务逻辑,可以被本地、远程或Webservice客户端调用。有两种类型的会话Bean:

  • 有状态的会话Bean
  • 无状态会话Bean

消息驱动的Bean
像会话Bean一样,它包含业务逻辑,但它是通过传递消息来调用的。

实体Bean
它总结了可以持久化在数据库中的状态。它已被弃用。现在,它被JPA(Java Persistent API)取代。有两种类型的实体Bean。
(i). Bean管理的持久性和(ii)。容器管理的持久性。

Spring

Spring是一个开源的轻量级框架,允许Java EE 7的开发者建立简单、可靠和可扩展的企业应用。这个框架使用各种技术,如面向方面的编程(AOP)、普通的Java对象(POJO)和依赖注入(DI),来开发企业应用。这个框架帮助你管理业务对象。与经典的Java框架和应用编程接口(API)相比,它使Web应用程序的开发变得更加容易,如Java数据库连接(JDBC)、JavaServer Pages(JSP)和Java Servlet。Spring框架的特点,如反转控制(IoC)、面向方面的编程(AOP)和事务管理,使其在框架列表中独树一帜。

EJB和Spring之间的区别:

属性 EJB Spring
规格 EJB是Java EE的一个规格。 Spring是一个框架。
依赖注入 EJB可以在容器中注入任何东西,包括EJB数据源、JMS资源和JPA资源。 Spring可以注入任何东西,包括列表、属性、地图和JNDI资源。
事务管理 EJB只支持JTA事务管理器。 Spring支持多种事务管理器,如JTA、JDBC和Hibernate。
持久性 EJB与JPA紧密集成。 Spring支持各种持久性技术,如JDBC、Hibernate、JPA和iBatis。
消息传递 EJB通过消息驱动Bean提供开箱即用的消息传递功能。 需要为每个消息添加监听器配置。
调度 EJB通过EJB时间服务提供简单的调度功能。 需要添加和配置Quartz来进行调度。
安全 EJB通过JAAS支持声明性和程序性安全。 Spring通过Spring配置文件提供声明式安全。
AOP EJB通过拦截器提供有限的支持。 Spring通过AspectJ提供强大的支持。