首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Quarkus中带有@ injection和Interface的依赖注入

Quarkus中带有@ injection和Interface的依赖注入
EN

Stack Overflow用户
提问于 2020-08-14 12:30:45
回答 1查看 11.1K关注 0票数 7

我正在尝试使用Quarkus1.6.1.Final和OpenJDK 11来使用Repository模式解析依赖注入。我想实现Interface,并给他们一些参数(比如@Named@Qualifier )来指定具体的类,但是目前我已经得到了UnsatisfiedResolutionException,并且不确定如何修复它。

这是我的那部分代码。

UseCase类:

代码语言:javascript
复制
@ApplicationScoped
public class ProductStockCheckUseCase {
    @Inject
    @Named("dummy")
    ProductStockRepository repo;

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

存储库接口:

代码语言:javascript
复制
public interface ProductStockRepository {
    public ProductStock findBy(String productId);
}

存储库实现:

代码语言:javascript
复制
@Named("dummy")
public class ProductStockDummyRepository implements ProductStockRepository {

    public ProductStock findBy(final String productId) {
        final ProductStock productStock = new ProductStock();
        return productStock;
    }
}

这里是我build.gradle依赖的一部分:

代码语言:javascript
复制
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'
}

当我运行这个(例如./gradlew assemble./gradlew quarkusDev )时,我得到了以下错误:

代码语言:javascript
复制
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

其他博客和SOs:

如何注入两个实现相同接口的两个不同类的实例?-堆栈溢出How to inject two instances of two different classes which implement the same interface?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-14 12:47:57

我的猜测是,您需要向ProductStockDummyRepository添加一个范围注释。可能是@Singleton还是@ApplicationScoped

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63412802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档