如何在Quarkus中编程注册Bean? [英] How to register bean programatically in Quarkus?
本文介绍了如何在Quarkus中编程注册Bean?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试找到一种在Quarkus DI中以编程方式创建Bean的方法,但没有成功。在这个框架中有可能吗?BeanManager
似乎尚未实现所需的方法。
推荐答案
首先,我们应该明确"以编程方式创建Bean"的确切含义。
但首先,我们应该定义"Bean"的含义。在CDI中,我们从两个方面讨论Bean:
- 组件元数据-描述组件属性以及如何创建组件实例;SPI为
javax.enterprise.inject.spi.Bean
- 组件实例-应用程序中使用的真实实例;在规范中我们将其称为"上下文引用"。
元数据通常派生自应用程序类。这样的元数据是"由类支持的"。我所说的"有类支持"指的是所有种类described in the spec。即类Bean、生产者方法和生产者字段。
现在,如果您希望以编程方式获取组件实例(选项2),您可以:
- 注入
javax.enterprise.inject.Instance
;例如参见the Weld docs - 使用
CDI.current().select(Foo.class).get()
- 使用特定于夸克的
Arc.container().instance(Foo.class).get()
但是,如果要添加/注册不受类支持的组件元数据(选项2),则需要添加使用特定于Quarkus的SPI的扩展,例如BeanRegistrar。
这篇关于如何在Quarkus中编程注册Bean?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文