【问题标题】:"Unsatisfied Dependencies" - Different Stateless Beans with same Interface“不满足的依赖关系” - 具有相同接口的不同无状态 Bean
【发布时间】:2019-01-02 02:40:19
【问题描述】:

我有三个具有相同接口的@Stateless Bean。

public interface ReportService
{
    List<String> determineRelevantData();

    Report generate(ReportRequest request, Locale locale) throws ServiceFailedException;
}

我将 bean 注入到一个外观 bean 中:

@Stateless
public class ReportServiceFacadeBean implements ReportServiceFacadeLocal
{
    @Inject
    private FirstReportBean firstReport;

    @Inject
    private SecondReportBean secondReport;

    @Inject
    private ThirdReportBean thirdReport;

    [...]
}

当我以这种方式部署它时,我得到:

WELD-001408:类型的依赖关系不满足 SecondReportBean 带有限定符 @Default at 注入点 [BackedAnnotatedField] @Inject private ReportServiceFacadeBean.secondReport

当我取消注释实现 bean 中的接口时,服务器启动时没有任何错误。我在这里想念什么?

【问题讨论】:

  • 除非我猜错了,否则错误消息是不完整的。以下是否有任何其他行,尤其是。谈论歧义依赖等?

标签: cdi java-ee-7


【解决方案1】:

与 CDI bean 相比,EJB bean 有一些不同的 bean 类型,然后用于注入。也就是说,您将希望通过其客户端可见部分(即接口)注入 EJB bean。

这完全由规范支持,这里是提到它的one chapter from CDI spec(带有指向其他的链接)。

在您的情况下,您必须引入 qualifiers 然后注入 bean,例如:

@Inject
@SomeQualifier
ReportService firstService;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-25
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 2017-12-18
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多