在 Quarkus 中作为 jar 运行时如何注入生产者方法?

问题描述 投票:0回答:0

我有以下代码,当我在我的 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 应用程序吗?

java jakarta-ee dependency-injection cdi quarkus
© www.soinside.com 2019 - 2024. All rights reserved.