【问题标题】:How to create a custom scope in Quarkus?如何在 Quarkus 中创建自定义范围?
【发布时间】:2020-03-05 13:05:31
【问题描述】:

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

【问题讨论】:

    标签: cdi quarkus


    【解决方案1】:

    您可以在 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 用于启发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      相关资源
      最近更新 更多