EJB和Spring的区别
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提供强大的支持。 |