我正在尝试使用Quarkus1.6.1.Final和OpenJDK 11来使用Repository模式解析依赖注入。我想实现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;
}
}这里是我build.gradle依赖的一部分:
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 )时,我得到了以下错误:
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?
发布于 2020-08-14 12:47:57
我的猜测是,您需要向ProductStockDummyRepository添加一个范围注释。可能是@Singleton还是@ApplicationScoped。
https://stackoverflow.com/questions/63412802
复制相似问题