アプリケーションでプロデューサーを使用したいのですが、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();
}
}
今、私は豆を注入しています:
@Inject
MessageSender messageSender;
プロジェクトをデプロイしようとすると、WELD-001409 エラーが発生し、Eclipse も複数の注入ポイントがあると言っています。
明示的な命名で機能します。
@Inject @Named("messageSender")
MessageSender messageSender;
この命名は必要ですか?