有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有限定符@Default的ZZZZ类型的java未满足依赖项

我有下面给出的豆子

@Singleton
@DependsOn("DefaultEmailService")
public class CustomerService implements UserHandlingService {

    private DefaultEmailService mailService;

    @Inject
    public CustomerService(DefaultEmailService mailService) {       
        this.mailService = mailService;
    }
}


@Singleton
@Startup
public class DefaultEmailService implements EmailService {

    public DefaultEmailService() {  
    }
}

我犯了这样的错误

Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type DefaultEmailService with qualifiers @Default
  at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject public com.project.service.CustomerService(DefaultEmailService)
  at com.project.service.CustomerService.<init>(CustomerService.java:0)

我做错什么了吗


共 (1) 个答案

  1. # 1 楼答案

    问题在于@Singleton注释,即来自javax.ejb而不是javax.inject。使用ejb one并将您的bean在CDI上下文上注册的接口定义为接口,而不是实现,请更改代码:

    @Inject
    public CustomerService(EmailService mailService) {
        this.mailService = (DefaultEmailService) mailService;
    }