在包含无法找到答案的情况下注入bean并包含beans.xml的情况下,获取以下异常:

Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type CustomerAgreementDaoImpl with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject public com.evry.integrator.snow.fetch.CustomerAgreementFetcher.customerAgreementDaoImpl
  at com.evry.integrator.snow.fetch.CustomerAgreementFetcher.customerAgreementDaoImpl(CustomerAgreementFetcher.java:0)

        at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:378)
        at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:290)


以下是代码结构:

/ WEB-INF中的Beans.xml

<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                           http://java.sun.com/xml/ns/javaee/beans_1_1.xsd"
       version="1.1" bean-discovery-mode="all">
</beans>


介面

public interface GenericDao<T, PK> {

public interface CustomerAgreementDao extends GenericDao<CustomerAgreement, Long>{


实现通用DAO的抽象类

public abstract class GenericDaoImpl<T, PK> implements GenericDao<T, PK> {

@PersistenceContext(unitName = "IntegratorMasterdataDS")
protected EntityManager em;


主要实施

@Stateless
public class CustomerAgreementDaoImpl extends GenericDaoImpl<CustomerAgreement, Long> implements CustomerAgreementDao {

public CustomerAgreementDaoImpl() {
    System.out.println("CustomerAgreementDaoImpl");
}


道用在服务等级

@Stateless
public class CustomerAgreementFetcher {

    @Inject
    public CustomerAgreementDaoImpl customerAgreementDaoImpl;


主调度程序加载以上所有内容

@Startup
@Singleton
@AccessTimeout(value = 5, unit = TimeUnit.MINUTES)
public class WPoller {
    @Inject
    CustomerAgreementFetcher customerAgreementFetcher;

最佳答案

您可以将字段的类型更新为CustomerAgreementDao接口吗?

@Stateless
public class CustomerAgreementFetcher {

    @Inject
    public CustomerAgreementDao customerAgreementDao;


相关主题:Is it possible to inject EJB implementation and not its interface using CDI?

关于java - DeploymentException:WELD-001408:在注入(inject)点[BackedAnnotatedField]上带有限定符@Default的类型<Class>的不满足依赖性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59134836/

10-10 12:41