带有限定符 @Default 的类型 ZZZZ 的不满足依赖关系
Unsatisfied dependencies for type ZZZZ with qualifiers @Default
我有下面给出的豆子。
@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)
我是不是做错了什么。
问题出在 @Singleton
注释,它来自 javax.ejb
而不是 javax.inject
。使用 ejb 并定义接口,您的 bean 在 CDI 上下文中注册为接口,而不是实现,更改您的代码:
@Inject
public CustomerService(EmailService mailService) {
this.mailService = (DefaultEmailService) mailService;
}
我有下面给出的豆子。
@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)
我是不是做错了什么。
问题出在 @Singleton
注释,它来自 javax.ejb
而不是 javax.inject
。使用 ejb 并定义接口,您的 bean 在 CDI 上下文中注册为接口,而不是实现,更改您的代码:
@Inject
public CustomerService(EmailService mailService) {
this.mailService = (DefaultEmailService) mailService;
}