“不满意的依赖性”-具有相同接口的不同无状态Bean

时间:2018-07-25 10:03:23

标签: cdi java-ee-7

我有三个具有相同接口的@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:对类型的依赖性不满意   具有限定符@Default的SecondReportBean   注入点[BackedAnnotatedField] @注入私有   ReportServiceFacadeBean.secondReport

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

1 个答案:

答案 0 :(得分:1)

与CDI bean相比,

EJB bean具有稍微不同的bean类型,然后将其用于注入。也就是说,您将希望按客户端可见的部分注入EJB bean,这意味着接口(除非您具有无接口视图)。

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

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

@Inject
@SomeQualifier
ReportService firstService;