我有以下代码,当我在我的 Quarkus 应用程序中使用它时效果很好:
public interface CrudRepository<T> {
void save(T t);
Set<T> findAll();
Set<T> findByMapOfKeyValues(T t);
}
public class CrudRepositoryImplementation<T> implements CrudRepository<T> {
private T t;
@Override
public void save(T t) {
// some impl
mapper.save(t);
}
@Override
public Set<T> findAll() {
//some impl
return new HashSet<>(mapper.query((Class<T>) t.getClass(), queryExpression));
}
@Override
public Set<T> findByMapOfKeyValues(T t) {
//some impl
return new HashSet<>(mapper.query((Class<T>) t.getClass(), queryExpression));
}
}
使用如下所示的生产者方法来指示要完成的 CDI 的 quarkus:
public class Config {
@Produces
@Dependent
public <T> CrudRepository<T> getCrudRepo() {
return new CrudRepositoryImplementation<>();
}
}
当我在我的应用程序的一个包中运行上面的代码并注入接口 CrudRepository 时,如下所示,一切正常:
@ApplicationScoped
public class VehicleService {
@Inject
CrudRepository<Vehicle> repository;
public void saveEVBattery(String vin){
//some impl
}
现在的问题是,当我在一个单独的 Maven 项目中构建包并将其作为依赖项导入到我的 quarkus 应用程序中时,出现以下错误。根据我的观察,我认为 quarkus 没有在运行时调用生产者方法,因此它没有得到注入它的实现。
pom.xml
<dependency>
<groupId>com.repo.dynamodb</groupId>
<artifactId>CrudRepositoryDynamoDB</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
运行时抛出的异常:
Build failure: Build failed due to errors
[ERROR] [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.e
nterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type com.repo.dynamodb.CrudRepository<Vehicle> and qualifiers [@Default]
你能指导我如何在运行时成功地将我的 jar 注入我的 Quarkus 应用程序吗?