gpt4 book ai didi

java - 什么是 Spring Framework 中的 EJB 替代方案

转载 作者:搜寻专家 更新时间:2023-11-01 01:32:58 25 4
gpt4 key购买 nike

我正在尝试学习 Spring Framework,在此之前我曾使用 EJB 创建应用程序

[Web 服务]->[业务层]->[DAO 层] | [数据库]

按照以下方式

  1. WebServices:使用 Jerseyurl mappings 的 Restful API,支持 JSON 和 XML 格式(news/list.json, news/list.xml).一旦请求被端点(url 映射方法)接收到,它就会通过查找(远程、本地)转发到相关的 EJB。 EJB处理每一件事,应用业务规则并将结果作为DTO(数据传输对象)返回,服务然后将结果转换为所需的格式(JSON,XML)

  2. 业务层:业务层(Facade)在EJB中实现,具有remotelocal接口(interface),这些 EJB 可以调用其他 EJB。 WebService 层(和/或定时器服务和 MDB)也可以调用任何 EJB)。对于与计时器服务相关的功能,我使用了 EJB Timer Service,对于消息,我使用了 Message Drive Bean 和用于日志记录和审计的拦截器。

  3. DAO 层:所有与数据库相关的功能(添加、编辑、删除、搜索)JPA/Hibernate 使用EntityManager 是写在这里(实体 bean 和 HQL)。无缝事务支持,每个 EJB 的方法(基于查找)调用被视为一个单独的事务,DAO 层的调用方法是同一事务的一部分(前提是没有提供额外的配置)。在单个事务中执行多个操作如果一个数据库操作失败,所有其他操作都会自动回滚。每个表都映射为具有关系等的实体类。

我曾在 Spring MVC 上工作,但无法正确映射/理解上述架构我对 AOP 了解一些,我认为它是拦截器的完美替代品(或者至少它对我有用)

现在我的问题是如何在 Spring 框架中替换所有这些

  1. Spring 中的 Jersey (RestAPI) 替代方案>
  2. Spring 中的 EJB 替代方案(由于 EJB 支持远程处理,对方法的每次查找调用都被视为事务,对 EJB 方法的调用可能会被拦截,并且它具有全状态和无状态两种风格)?
  3. Spring 中的定时器服务替代方案?
  4. Spring 中的 Message Drive Bean 替代方案?
  5. 拦截器替代方案是 Spring 中的 AOP(根据我的经验并且符合我的目的)
  6. Spring 的 JPA(实体管理器)替代方案?

最佳答案

Jersey (RestAPi) alternative in Spring?

Spring MVC does this perfectly fine , 在我看来。只需将 Controller 中的方法注释为您要使用的 REST api。

EJB alternative in Spring (as EJB supports remoting, each lookup call to a method is treated as a transaction, calls to EJB's method could be intercepted and it comes with state-full and stateless flavors)?

没有完全的选择。有几种技术可以部分实现这一点:用于远程调用的 Spring remoting,作为事务的 Spring 事务,用于拦截调用的 Spring AOP 拦截器。但是,例如远程调用的 XA 事务是您在 Spring 中无法获得的。然而,Spring 与 EJB 一起工作得很好,所以如果您喜欢它们,您仍然可以拥有它们并在软件的其他部分使用 Spring。

Timer Service alternative in Spring?

Spring task scheduling

Message Drive Bean alternative in Spring?

Message Listener Containers

Interceptor alternative is AOP in Spring (As per my experience and that serve my purpose)

spring中的拦截器分为几级。有handler interceptors in mvc ,有像 SpringAutowiringInterceptor 这样的 bean 调用拦截器,也有基于 AOP 的拦截器,可以在多层中使用。

JPA(entity manager) alternative in spring?

Spring 也有多个。将 JPA 与 Spring-Data 一起使用实际上非常简单,它是 designed to integrate to JPA .有Spring JDBC如果 Spring Data 不是您想要的,还有其他数据层替代方案。

关于java - 什么是 Spring Framework 中的 EJB 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33415530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com