📜  EJB 和 Spring 的区别

📅  最后修改于: 2021-09-14 01:22:56             🧑  作者: Mango

EJB 和 Spring 都用于开发企业应用程序。但它们之间几乎没有区别。因此,在本文中,我们试图涵盖所有这些差异。

1. 企业Java Bean (EJB):
EJB 代表企业Java Bean。它是一个服务器端软件组件,用于汇总应用程序的业务逻辑。 EJB 容器为 Web 相关软件元素提供运行时环境,包括计算机可靠性、 Java Servlet 生命周期 (JSL) 管理、事务过程和其他 Web 服务。要运行 EJB 应用程序,我们需要一个应用程序服务器,例如 Jboss、Glassfish、Weblogic、Websphere 等。它执行生命周期管理、对象池、事务处理、安全性等。 EJB 分为三种类型。

  • 会话 Bean –
    会话 bean 包含可由本地、远程或 web 服务客户端调用的业务逻辑。有两种类型的会话 bean:
    (一世)。有状态会话 bean 和(ii)。无状态会话 bean。
  • 消息驱动 Bean –
    和Session Bean一样,它包含业务逻辑,但它是通过传递消息来调用的。
  • 实体 Bean –
    它总结了可以在数据库中持久化的状态。它已被弃用。现在,它被 JPA(Java Persistent API)取代。实体 bean 有两种类型:
    (一世)。 Bean 管理的持久性和(ii)。容器管理的持久性。

2. 春天:
Spring 是一个开源轻量级框架,它允许Java EE 7 开发人员构建简单、可靠且可扩展的企业应用程序。该框架使用各种技术,例如面向切面编程 (AOP)、Plain Old Java Object (POJO) 和依赖注入 (DI),来开发企业应用程序。此框架可帮助您管理业务对象。与经典的Java框架和应用程序编程接口 (API)(例如Java数据库连接 (JDBC)、JavaServer Pages (JSP) 和Java Servlet)相比,它使 Web 应用程序的开发更加容易。 Spring 框架的特性,如控制反转 (IoC)、面向方面编程 (AOP) 和事务管理,使其在框架列表中独一无二。

EJB 和 Spring 的区别:

Properties EJB Spring
Specification EJB is a specification of Java EE. Spring is a framework.
Dependency Injection It can inject anything in the container including EJB Data sources, JMS Resources, and JPA Resources. It can inject anything including list, properties, map, and JNDI resources.
Transaction Management It supports only JTA transaction Manager. It supports multiple transaction manager such as JTA, JDBC, and Hibernate.
Persistence It tightly integrated to JPA. It supports various persistence technologies such as JDBC, Hibernate, JPA, and iBatis.
Messaging It provides out of the box messaging capabilities through Message Driven Beans. We need to add listener configuration for each message.
Scheduling It provides simple scheduling through EJB Time Service. We need to add and configure Quartz for scheduling.
Security It supports both declarative and programmatic security through JAAS. It provides declarative security through the Spring configuration file.
AOP It provides limited support through interceptors. It provides robust support through AspectJ.