@Named
proporciona un bean administrado CDI con un nombre EL que se utilizará en tecnologías de visualización como JSF o JSP. Tenga en cuenta que en una aplicación CDI, no necesita para realizar un anotación administrado por CDI (gracias a @Karl por su comentario)
@ManagedBean
hace que el bean gestionado por JSF y se puede:
- inyectarlo en otros granos @ManagedBean anotada
- acceder a él desde su punto de vista a través de lenguaje de expresión
(pero no en los granos de @Named!)
Consulte este related question para obtener más información sobre cómo funciona la inyección entre ambos tipos de granos.
Tenga en cuenta que también existe una diferencia con el alcance de los beans. Vienen de diferentes paquetes, pero se nombran de forma idéntica (JSF: javax.faces.bean
, CDI: javax.enterprise.context
, lo que a menudo es una fuente de error y confusión si se incluye la clase equivocada
Desde mi experiencia:. Debe utilizar granos CDI siempre que sea posible ya que son más flexibles que los beans administrados por JSF. El único inconveniente es que CDI no conoce un alcance de vista, por lo que debe recurrir a @ManagedBean o usar una extensión de terceros como Seam.
¿Qué tipo de limitaciones? '@ ManagedBean' es un subconjunto de las funciones de' @ Named', por lo que '@ Named' debería funcionar en todas partes. –