我有三个具有相同接口的@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中的接口时,服务器启动时没有任何错误。我在这里想念什么?
答案 0 :(得分:1)
EJB bean具有稍微不同的bean类型,然后将其用于注入。也就是说,您将希望按客户端可见的部分注入EJB bean,这意味着接口(除非您具有无接口视图)。
这完全受规范支持,这里是one chapter from CDI spec提到了它(带有指向其他链接的链接)。
在您的情况下,您将必须引入qualifiers,然后注入如下所示的bean:
@Inject
@SomeQualifier
ReportService firstService;