gpt4 book ai didi

jakarta-ee - CDI——继承 : trigger producer of base type

转载 作者:行者123 更新时间:2023-12-01 14:44:22 25 4
gpt4 key购买 nike

我正在尝试实现某种生产者工厂模式。
在注入(inject)派生类型时是否有可能以某种方式触发基类型的生产者方法?

假设有以下接口(interface):

interface Service
interface AService extends Service

我想触发这个生产者:

@Produces
Service factory()

在这个注入(inject)点:

@Inject 
AService srv;

目的是通过添加标记接口(interface)(在本例中为服务)为不同类型的服务提供一个生产者工厂。

谢谢你帮助我


更新:

我尝试了 LightGuards 解决方案并将 @Typed 添加到 AService 实现中:

@Typed(Service.class)
class AServiceImplemenation implements AService

不幸的是,我得到了一个未满足的依赖关系错误。 CDI 不会为 AService 注入(inject)点调用 Service 生产者。当然,出于类型安全的原因,这是有道理的。但是有没有办法强制调用 Service 生产者?

最佳答案

如果您只有 super 类型的生产者,并且使它成为 AService 类型没有无参数的构造函数(或用 @Inject 注释的构造函数),或者是 @Typed 或 CDI 1.1 中的 @Vetoed 您可以从您的生产者返回 Service 的任何子类。

关于jakarta-ee - CDI——继承 : trigger producer of base type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17194165/

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