如何在Quarkus中编程注册Bean? [英] How to register bean programatically in Quarkus?

查看:0
本文介绍了如何在Quarkus中编程注册Bean?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试找到一种在Quarkus DI中以编程方式创建Bean的方法,但没有成功。在这个框架中有可能吗?BeanManager似乎尚未实现所需的方法。

推荐答案

首先,我们应该明确"以编程方式创建Bean"的确切含义。

但首先,我们应该定义"Bean"的含义。在CDI中,我们从两个方面讨论Bean:

  1. 组件元数据-描述组件属性以及如何创建组件实例;SPI为javax.enterprise.inject.spi.Bean
  2. 组件实例-应用程序中使用的真实实例;在规范中我们将其称为"上下文引用"。

元数据通常派生自应用程序类。这样的元数据是"由类支持的"。我所说的"有类支持"指的是所有种类described in the spec。即类Bean、生产者方法和生产者字段。

现在,如果您希望以编程方式获取组件实例(选项2),您可以:

  1. 注入javax.enterprise.inject.Instance;例如参见the Weld docs
  2. 使用CDI.current().select(Foo.class).get()
  3. 使用特定于夸克的Arc.container().instance(Foo.class).get()

但是,如果要添加/注册不受类支持的组件元数据(选项2),则需要添加使用特定于Quarkus的SPI的扩展,例如BeanRegistrar

这篇关于如何在Quarkus中编程注册Bean?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆