如何在Quarkus中创建自定义作用域



我试着按照这个指令https://rpestano.wordpress.com/2013/06/30/cdi-custom-scope/,但它不起作用,因为我的自定义Context的方法没有被激发。

您可以在Quarkus中声明自定义作用域然而,Quarkus并没有使用完整的CDI实现,而是有一个更轻的实现,它不支持您从CDI中所知道的一切。原因有很多,但大多数情况下这样做是为了使其构建时间友好。

CDI扩展是固有的基于运行时的东西之一,因此不适合Quarkus的东西。相反,您必须使用Quarkus扩展来声明您的范围/上下文。让我给你一些材料。。。

这里是Quarkus CDI指南的链接,它列出了它的局限性以及如何补偿它。

这个位特别展示了如何在扩展中注册自定义作用域。方法简单如下:

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

这里是Narayana Quarkus扩展如何使用完全相同的API注册@Transactional的链接。底层上下文类与您在CDI(或Weld(中使用的类非常相似,请看看Narayana用来获得灵感的这个类。

最新更新