Ograniczone leki generyczne z CDI
Specyfikacja JSR-299 określa w §3.1:
Jeśli zarządzana klasa komponentu bean jest typem ogólnym, musi mieć zasięg @D niezależnie. Jeśli zarządzany komponent bean z parametryzowaną klasą komponentu bean deklaruje dowolny zakres inny niż @Dependent, kontener automatycznie wykrywa problem i traktuje go jako błąd definicji.
Oznacza to, że nie możesz tego zrobić:
@Named
@SessionScoped or @RequestScoped or similar
public class MyProducer<T> {...}
Jakie są techniczne powody tej decyzji?
Czy przypadkiem zostanie to naprawione w nadchodzącej wersji CDI?
Czy istnieje najlepsza praktyka do radzenia sobie z tym problemem?
Dziękuję Ci
EDYTOWAĆ - obejściem, którego często mogę użyć, jest wstrzyknięcie ogólnego komponentu POJO-bean do komponentu bean o wymaganym zakresie. Często, ale nie zawsze.