如何在Quarkus中创建自定义范围?

时间:2020-03-05 13:05:31

标签: cdi quarkus

我尝试遵循此说明https://rpestano.wordpress.com/2013/06/30/cdi-custom-scope/ ,但是它不起作用,因为自定义Context的方法没有被触发。

1 个答案:

答案 0 :(得分:2)

您可以在Quarkus中声明自定义范围。但是,Quarkus不使用完整的CDI实现,而是具有更轻的实现,它不支持您习惯于CDI的所有内容。 。原因是多种多样的,但主要是为了使它建立时间友好。

CDI扩展是本质上基于运行时的事物之一,因此不适合Quarkus。相反,您将必须使用Quarkus扩展名来声明您的作用域/上下文。让我给你一些材料...

这里通常是Quarkus CDI指南的链接,列出了它的局限性以及补偿方法。

This bit in particular显示了如何在扩展名中注册自定义范围。方法很简单:

@BuildStep
ContextRegistrarBuildItem customContext() {
    return new ContextRegistrarBuildItem(new ContextRegistrar() {
         public void register(RegistrationContext registrationContext) {
            registrationContext.configure(CustomScoped.class).normal().contextClass(MyCustomContext.class).done();
         }
    });
}

here is a link介绍Narayana Quarkus扩展如何使用此完全相同的API来注册@Transactional。基础上下文类非常类似于您在CDI(或Weld)中使用的take a look at this class,Narayana用于启发。