JSF Managed Bean vs CDI Named Bean
Reemplaza el obsoleto @ManagedBean de JSF por @Named de CDI para un modelo de inyección de dependencias unificado.
@ManagedBean
@SessionScoped
public class UserBean implements Serializable {
@ManagedProperty("#{userService}")
private UserService userService;
private String name;
public String getName() { return name; }
public void setName(String name) {
this.name = name;
}
public void setUserService(UserService svc) {
this.userService = svc;
}
}
@Named
@SessionScoped
public class UserBean implements Serializable {
@Inject
private UserService userService;
private String name;
public String getName() { return name; }
public void setName(String name) {
this.name = name;
}
}
Modelo unificado
Un solo contenedor CDI gestiona todos los beans — JSF, REST y las capas de servicio comparten la misma inyección.
Menos código repetitivo
@Inject reemplaza @ManagedProperty y su método setter obligatorio.
A prueba de futuro
@ManagedBean fue eliminado en Jakarta EE 10; @Named es el reemplazo soportado.
CDI @Named disponible desde Java EE 6; @ManagedBean eliminado en Jakarta EE 10
@ManagedBean y @ManagedProperty de JSF fueron deprecados en Jakarta Faces 2.3 y eliminados en Jakarta EE 10. El reemplazo basado en CDI usa @Named para exponer el bean a expresiones EL e @Inject para el cableado de dependencias. Esto unifica el modelo de beans: las páginas JSF, los recursos JAX-RS y los EJBs comparten el mismo contenedor CDI.