gpt4 book ai didi

cdi - 如何强制使用 CDI 生产者方法?

转载 作者:行者123 更新时间:2023-12-04 18:47:59 25 4
gpt4 key购买 nike

我在这里的部分问题是使用正确的词汇,所以我提前为这可能是一个简单的术语问题道歉。

假设我有一个 Person接口(interface)和 PersonBean实现该接口(interface)的类。

进一步假设我在某处有一个生产者方法(注释为 @Produces),它返回一个 Person .在内部它返回一个新的 PersonBean ,但那既不是这里也不是那里。

最后,假设我在某个地方有另一个 CDI bean,其注入(inject)点定义如下:

@Inject
private Person person;

假设我有我所有的 beans.xml文件到位等,并已引导 Weld 或其他符合 CDI-1.0 的环境,因为这一切都代表我将得到一个模棱两可的定义错误。这是有道理的:Weld 会找到我的 PersonBean作为注入(inject)的候选者(它可以只调用构造函数),并将找到我的生产者方法的输出作为注入(inject)的候选者。

我想做的是以某种方式强制生产 Person此应用程序中的实例始终通过生产者方法进行路由。

我知道我可以在某处发明一些限定符并使生产者方法产生 Person由该限定符限定的实例。如果我这样做,并更改我的注入(inject)点以包含限定符,那么显然这些合格的注入(inject)剂只有一个来源(即我的生产者方法),所以瞧,问题解决了。

但是假设我不想发明一些虚假的限定词。 (我并不是说是这种情况;只是想更深入地理解这些问题。)我有什么选择?我有吗?我想我可以把 @Typed(Object.class)PersonBean使它不被视为 Person通过 CDI....

欢迎任何想法,包括指向文档的指针,或更好的理解方式。谢谢。

最佳答案

将您的 PersonBean 注释为 @Alternative 然后它将使用生产者方法。

关于cdi - 如何强制使用 CDI 生产者方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10918474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com