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

夸克中@inject和界面的依赖注入

聂昱
2023-03-14

我正在尝试使用Quarkus1.6.1.Final和OpenJDK11解决存储库模式的依赖注入问题。我想实现Inject with Interface,并给他们一些参数(如@named@qualifier)来指定具体类,但目前我有UnsatisfiedResolutionException并且不确定如何修复它。

这里是我的代码部分。

UseCase类:

@ApplicationScoped
public class ProductStockCheckUseCase {
    @Inject
    @Named("dummy")
    ProductStockRepository repo;

    public int checkProductStock() {
        ProductStock stock = repo.findBy("");
        return stock.getCount();
    }
}

存储库接口

public interface ProductStockRepository {
    public ProductStock findBy(String productId);
}
@Named("dummy")
public class ProductStockDummyRepository implements ProductStockRepository {

    public ProductStock findBy(final String productId) {
        final ProductStock productStock = new ProductStock();
        return productStock;
    }
}
dependencies {
    implementation 'io.quarkus:quarkus-resteasy'
    implementation 'io.quarkus:quarkus-arc'
    implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")

    testImplementation 'io.quarkus:quarkus-junit5'
    testImplementation 'io.rest-assured:rest-assured'
}
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type ProductStockRepository and qualifiers [@Named(value = "dummy")]
        - java member: ProductStockCheckUseCase#repo
        - declared on CLASS bean [types=[ProductStockCheckUseCase, java.lang.Object], qualifiers=[@Default, @Any], target=ProductStockCheckUseCase]

我阅读并尝试了以下文章:

部分公文:

  • 夸克-上下文和依赖注入https://quarkus.io/guides/cdi-reference
  • JSR 365:Java 2.0的上下文和依赖注入https://docs.jboss.org/CDI/spec/2.0/CDI-spec.html#default_bean_discovery
  • 按需与CDI和EJB 3.1接口https://www.oracle.com/technical-resources/articles/java/intondemand.html
  • 23.7注入Beans-Java平台,企业版:Java EE教程(第7版)https://docs.oracle.com/javaee/7/Tutorial/cdi-basic007.htm
  • Java-如何注入JPararePository实现-堆栈溢出如何注入JPararePository实现
  • Java-如何注入实现相同接口的两个不同类的两个实例?-堆栈溢出如何注入实现相同接口的两个不同类的两个实例?
  • Java EE上下文和依赖注入@qualifier https://memorynotfound.com/context-dependency-injection-qualifier/

共有1个答案

李嘉胜
2023-03-14

我的猜测是,您需要向ProductStockDummyRepository添加一个作用域注释。可能是@singleton@applicationscoped

 类似资料:
  • 使用 @Inject 注解可以向 Controller 以及 Interceptor 中注入依赖对象,使用注入功能需要如下配置: public void configConstant(Constants me) { // 开启对 jfinal web 项目组件 Controller、Interceptor、Validator 的注入 me.setInjectDependency(t

  • 我想在我的 Kotlin 资源文件中包含依赖项。但我不能。 我做了这个教程:https://quarkus.io/guides/rest-client-guide 但是,为了开始这个项目,我在我的项目中包含了扩展“kotlin”。 我的代码如下: 国家 国家服务 国家资源.kt 应用程序属性 错误: 有人能帮我吗? 谢谢

  • 主要内容:inject 实践,inject 原理分析在介绍 inject 之前我们先来简单介绍一下“依赖注入”和“控制反转”这两个概念。 正常情况下,对函数或方法的调用是我们的主动直接行为,在调用某个函数之前我们需要清楚地知道被调函数的名称是什么,参数有哪些类型等等。 所谓的控制反转就是将这种主动行为变成间接的行为,我们不用直接调用函数或对象,而是借助框架代码进行间接的调用和初始化,这种行为称作“控制反转”,库和框架能很好的解释控制反转的概念。 依

  • 对如何实现这一点有什么想法吗?我有一个编程解决方案,但更喜欢一个仅通过注释的解决方案

  • 如何在类中注入依赖与@Inject注释micronaut框架 如何使用@Inject

  • 问题内容: 我是AngularJS的新手,我想了解更多有关默认注入的依赖项的信息。在阅读代码时,我注意到有时依赖项是事先明确声明的,有时则不是。例如: 给出与以下结果相同的结果: 这是如何运作的?Angular是否假设要注入的模块的名称与参数中的变量相同? 同样,奇怪的是,如果您确实指定将要注入的依赖项,则必须以 正确的顺序 指定 所有 依赖项,否则将无法正常工作。例如,这是损坏的代码: 有人可以