"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;
我有三个 @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;