Я хочу использовать производителя в своем приложении, но я застрял в точке, где я пытаюсь ввести компонент. im получая известную ошибку WELD-001409. пожалуйста, осветите мое понимание производителя cdi.CDI Producer and Injection
вот мой интерфейс:
@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, и затмение также говорит о наличии нескольких точек впрыска.
работает с явным именованием:
@Inject @Named("messageSender")
MessageSender messageSender;
этим именованием необходимым?
На боковой ноте - укажите класс исключения Java вместо специфического для реализации WELD-001409': 1. некоторые люди могут знать CDI, но не обязательно WELD, возможно, OWB; 2. Даже большинство людей, которые работают с WELD, вероятно, помнят полное и описательное имя класса исключения Java, но не загадочное и бессмысленное «WELD-001409». – rdcrng