Мы сталкиваемся с необычными проблемами впрыска в Widfly из-за изменений CDI. Мы имеем интерфейсПроблемы с CDI при инъекции родового типа: Wildfly 8.2.0.Final
public interface Command<I, O> {
}
и многие классы реализуют этот интерфейс, как этот
public class ApproveUserRequests implements Command<ApproveUserRequestsRequest, List<String>> {
}
классы слушателя приложений любят, чтобы получить список всех доступных классов и использует инъекцию, как этот
@Inject
private Instance<Command<I, O>> mActions;
Однако экземпляр возвращенные mActions, всегда были нулевыми. После отладки источник обнаружил, что единственный способ получить список всех экземпляров является использование
@Inject
private Instance<Command<?, ?>> mActions;
Кроме того, мы столкнулись с проблемами при использовании инъекций общего типа, однако использование подстановочных типа помог нам. - См. Больше на: https://developer.jboss.org/thread/256783#sthash.1s6tuXsR.dpuf
Пожалуйста, отметьте свой код с помощью отступов или пробелов в 4 пробела или в виде обратных тиков. Таким образом, вы избегаете проблем с кодом, который выходит неправильно и смешно, когда-то размещался. Также ваши две инъекции выглядят одинаково, а вторая, похоже, не делает ничего другого? – YoYo
Отмечено. Второй - другой, мы используем подстановочный поиск (?,?). первый использует . – Srivathsan
Подстановочный знак имеет смысл, что предыдущая версия. Подстановочный знак в generics означает любой тип, поэтому, если вы хотите все типы, а затем впрыскивайте с использованием универсальных дженериков. Я просто вообще не вижу ничего странного здесь. Ожидаемое поведение – maress