javax.enterprise.context.SessionScoped
(JSR 346), a wszystkie inne adnotacje ramach pakietu javax.enterprise.context.*
utrzymać kontekst CDI. CDI zapewnia alternatywny, wszechstronny i bardziej zaawansowany mechanizm dla wtrysku zależności, komponentu bean i ogólnego zarządzania zasobami w przestrzeni Java EE. Jest to alternatywa dla fasoli zarządzanej przez JSF i jest ustawiona nawet w celu zastąpienia mechanizmu zarządzania komponentami bean JSF w coming version of JSF.
Obecnie fasola z komentarzem JSF i CDI jest wymienna w dowolnej aplikacji WWW Java EE (z pewnymi niewielkimi ograniczeniami). Jednak fasola z przypisami CDI wykracza daleko poza dziedzinę warstwy sieciowej, dlatego specyfikacja Java EE ewoluuje, aby CDI był standardowym mechanizmem bean i DI.
Podczas gdy CDI może być oczywistym wyborem dla całego rozwoju Java EE, zarządzane fasole JSF są przenośne dla kontenerów serwletów (Tomcat) i serwerów aplikacji (Glassfish, JBoss itp.). Ziarna CDI mogą mieszkać tylko na pełnych serwerach aplikacji. Jednak z some legwork Tomcat 7 może być podłączony do obsługi CDI.
W szczególności, javax.enterprise.context.SessionScoped
jest równoległą implementacją zakresu sesji JSF w obrębie CDI.
javax.faces.bean.SessionScoped
(JSR 314), a wszystkie inne adnotacje ramach pakietu javax.faces.bean.*
utrzymać JSF specyficzne wtrysku zależność i mechanizm zarządzania fasoli. Fasola opatrzona adnotacjami JSF są jednak użyteczne tylko w warstwie internetowej. Wszystkie zakresy dostępne z adnotacjami JSF zostały zreplikowane w specyfikacji CDI.
javax.annotation.ManagedBean
(JSR 316) i inne adnotacje DI-powiązanymi na javax.annotation.*
są próbą uogólnienia adnotacje JSF z siedzibą w innych zastosowaniach w ramach specyfikacji Java EE i naprawdę nie powinny być używane przez końcowego dewelopera.
Dlaczego istnieją? Cóż, IMO, przejście od fasoli JSF do fasoli CDI to naturalna ewolucja technologii. Fasole JSF miały dobry bieg, ale takie jak Spring, Guice i Seam dały jasno do zrozumienia, że technologia ta nie była wystarczająca. Konieczne było również wypełnienie luki między komponentami sieci i komponentami EJB, a odpowiedzią na to zapotrzebowanie jest CDI.
Zobacz te pytania związane też: