У меня есть вопрос, связанный с предупреждением CDI о недопустимых или неоднозначных зависимостях для точки впрыска.неудовлетворительные или неоднозначные зависимости для точки впрыска для класса, который имеет конкретный конструктор
Кусок кода:
@Named(value = "LoginView")
@RequestScoped
public class LoginView implements Serialization {
private static final long serialVersionUID = 1L;
@Inject
private UserContext userContext;
}
@Named
@ApplicationScoped
public class UserContext implements Serialization {
public UserContext(String app, String prod, List<String>prodLines) {
this.app=app;
this.prod=prod;
this.prodLines = prodLines;
}
}
я получаю:
org.weld.exceptions.DeploymentExceptions: неудовлетворенные зависимости для типа [UserContext] с классификаторов [@Inject ] точка впрыска.
Если я пытаюсь удалить @Inject
вопрос развертывания фиксируется, но объект UserContext является недействительным, так бросает NullPointerException
. Я не использую EJB, поэтому не могу использовать @EJB
вместо @Inject
.
Проверьте наличие ошибок. Я подозреваю, что CDI не может построить «UserContext» из-за отсутствия информации о конструкторе или отсутствующем конструкторе no-arg. – Thomas
Возможная проблема заключается в том, что 'UserContext' не может быть создан, поскольку он не имеет конструктора без аргументов. Вам нужно либо сообщить инфраструктуре DI, какие аргументы конструктора использовать или создать конструктор без аргументов, и ввести три параметра с помощью '@ Inject' или через сеттеры. –
@JiriTousek Хорошая точка. Благодаря!! – Harleen