我想在我的应用程序中使用生产者,但我被困在我试图注入 bean 的地方。我得到了著名的 WELD-001409 错误。请减轻我对cdi生产者的理解。
这是我的界面:
@Named
public interface MessageSender {
void sendMessage();
}
豆子:
public class EmailMessageSender implements MessageSender {
@Override
public void sendMessage() {
System.out.println("Sending email message");
}
}
和制片人:
@SessionScoped
public class MessageSenderFactory implements Serializable {
private static final long serialVersionUID = 5269302440619391616L;
@Produces
public MessageSender getMessageSender() {
return new EmailMessageSender();
}
}
现在我正在注入 bean:
@Inject
MessageSender messageSender;
当我尝试部署项目时,我得到了 WELD-001409 错误,并且 Eclipse 还说有多个注入点。
它适用于显式命名:
@Inject @Named("messageSender")
MessageSender messageSender;
这个命名有必要吗?