"Unsatisfied Dependencies" - 具有相同接口的不同无状态 Bean

"Unsatisfied Dependencies" - Different Stateless Beans with same Interface

我有三个 @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: Unsatisfied dependencies for type SecondReportBean with qualifiers @Default at injection point [BackedAnnotatedField] @Inject private ReportServiceFacadeBean.secondReport

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

与 CDI bean 相比,EJB bean 具有一些不同的 bean 类型,然后用于注入。也就是说,您将希望通过客户端可见的部分注入 EJB bean,这意味着接口(除非您有无接口视图)。

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

在您的情况下,您将必须引入 qualifiers 然后像这样注入 bean:

@Inject
@SomeQualifier
ReportService firstService;