与@NoScope之类的quarkus像@Stateless吗?

时间:2019-12-10 16:31:41

标签: quarkus

@Stateless EJB的quarkus对应物是什么?

实际上,我只能在典型的cdi bean中使用cdi,但是在quarkus中没有像@Stateless这样的范围不存在的bean,或者?

@NoScope // such scope does actually not exit in cdi or quarkus
public class MyBean{

    @Inject 
    EntityManager em;

}

2 个答案:

答案 0 :(得分:2)

当我们在使用@Stateless 的上下文中使用@RequestScope 时,我们只会通过在每个请求上销毁和创建 bean 来模拟 @Stateless 行为。好处是我们在请求之间强制隔离;然而,权衡是我们在每个请求中都执行昂贵的 bean 创建/销毁。

如果我们关心性能并且只需要无状态行为而不在请求之间强制隔离,我们应该将我们的 bean 设计为无状态并使用 @Dependent 或 @ApplicationScoped 作用域。如果开发人员小心并无状态地编写代码,就不会有请求之间没有隔离的风险。

使用@RequestScope 作为@Stateless 对于框架中缺少的功能来说,这听起来像是一种糟糕的解决方法;因此,除非必要,否则我不想在这种情况下使用它。

答案 1 :(得分:1)

CDI @RequestScoped表示每个请求的新实例。它不会在请求之间保持状态,因此您可以将其视为@Stateless的替代。

@Stateless vs @RequestScoped