java - JAX-RS 资源作为 POJO 与 CDI 与 EJB

标签 java jakarta-ee jax-rs ejb cdi

JAX-RS 根资源由 @Path 注释定义,并且可能使用托管组件来完成实际工作,例如:

@Path("resource")
public class Resource
{
  @Inject
  Worker worker;

  @GET
  public String getDetails() {
    return worker.getDetails();
  }
}

现在我可以将此 JAX-RS 根资源传输到 CDI bean:

@RequestScoped
@Path("resource")
public class Resource {...}

或者 EJB:

@Stateless
@Path("resource")
public class Resource {...}

那么 - 以 POJO、CDI 或 EJB 方式执行的结果是什么?从外部看,对 URL 的请求传递了三遍相同的内容,但在幕后发生了什么以及注入(inject)的组件与每种情况有何关联?

最佳答案

这很大程度上取决于上下文。您是否需要 EJB 提供的额外功能(定义明确的事务语义、代理无状态池处理程序、集群支持等),或者您只需要依赖注入(inject)?

只要使用一个 CDI bean 就可以为您提供现成的,如果这就是您所需要的。如果您甚至不需要它,POJO 将为您提供最简单的性价比。

关于java - JAX-RS 资源作为 POJO 与 CDI 与 EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52497878/

相关文章:

jakarta-ee - 在发送到死信队列之前修改 JMS 消息

基于类型参数的Java EE注入(inject)

java - 在Java中重写domain类的equals()和hashCode()方法

java - JAX-RS 和长轮询

java - 当异步连接数超过 7 时,Jersey 卡住

java - Jersey 两次序列化继承的属性(property)

java - 二进制数字提升的逻辑

java - null异常如何进入try-catch分支?

java - 如何在 JSP 页面的一部分(即在一个特定的 div 中)显示 hibernate 绑定(bind)验证异常

java - 无论如何要创建一个指向类成员方法的切入点?