当前位置: 首页 > 知识库问答 >
问题:

“未满足的依赖项”-具有相同接口的不同无状态bean

步兴为
2023-03-14
public interface ReportService
{
    List<String> determineRelevantData();

    Report generate(ReportRequest request, Locale locale) throws ServiceFailedException;
}
@Stateless
public class ReportServiceFacadeBean implements ReportServiceFacadeLocal
{
    @Inject
    private FirstReportBean firstReport;

    @Inject
    private SecondReportBean secondReport;

    @Inject
    private ThirdReportBean thirdReport;

    [...]
}

当我在实现的bean中取消对接口的注释时,服务器启动时不会出现任何错误。我错过了什么?

共有1个答案

阳长恨
2023-03-14

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

这得到了规范的充分支持,下面是CDI规范中提到的一章(与其他链接)。

在您的例子中,您必须引入限定符,然后注入bean,如:

@Inject
@SomeQualifier
ReportService firstService;
 类似资料:
  • 我正在尝试实现一个quarkus-extension用于授权/认证。我使用现有的< code > quar kus-small rye-jwt-abx -扩展作为例子。一切似乎都很好,除了我不能注入< code>Principal: 我得到了 对 java.security.主体和限定符类型未满足的依赖关系 [@Default] 注入

  • 我正在尝试创建一个带有Wildfly和数据库连接的EJB Web项目,以持久化我的类“article”。但当我启动我的应用程序时,我得到了错误 包装服务; ArticleDaoImpl

  • 问题内容: 我的应用程序的登录页面有两种状态:,。现在,我想在同一URL上显示这两种状态,但让控制器和模板取决于用户会话(用户是否登录?)。 有没有办法做到这一点? 问题答案: 您可以有一个基本状态来控制要加载的状态,并且可以简单地让声明该基本状态的子级没有url: 现在,在基本状态()的控制器中,您可以检查用户是否已登录,并用于加载适当的状态。 编辑 如所承诺的那样,正在努力工作。

  • 在app.gradle中,我只为专业版添加了LockPattern库: 我在两种风格中都描述了相同的类(所以在主文件夹中),因为它很大,我不想在两种风格中重复代码。pro版本成功构建,但lite版本显示了一个错误,因为我没有导入lite版本的依赖项。 我看到的一个解决方案是将lockpattern库添加到两种口味中,然后使用proGuard,将其从lite口味中删除。虽然我相信这可能奏效,但这可能

  • 但是我有两种回购方式 如何创建两个bean,其中一个是用注入的,另一个是用注入的?