Enterprise Intermediário

Substitua o @ManagedBean depreciado do JSF por CDI @Named para um modelo unificado de injeção de dependências.

✕ Java EE
@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;
    }
}
✓ Jakarta EE 10+
@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;
    }
}
Viu um problema com este código? Nos avise.
🔗

Modelo unificado

Um único container CDI gerencia todos os beans — JSF, REST e camadas de serviço compartilham a mesma injeção.

🗑️

Menos boilerplate

@Inject substitui @ManagedProperty e seu método setter obrigatório.

🔮

À prova de futuro

@ManagedBean foi removido no Jakarta EE 10; @Named é a substituição suportada.

Abordagem Antiga
@ManagedBean
Abordagem Moderna
@Named + CDI
Desde o JDK
11
Dificuldade
Intermediário
JSF Managed Bean vs CDI Named Bean
Disponível

CDI @Named disponível desde o Java EE 6; @ManagedBean removido no Jakarta EE 10

O @ManagedBean e @ManagedProperty do JSF foram depreciados no Jakarta Faces 2.3 e removidos no Jakarta EE 10. A substituição baseada em CDI usa @Named para expor o bean a expressões EL e @Inject para a conexão de dependências. Isso unifica o modelo de beans — páginas JSF, recursos JAX-RS e EJBs compartilham o mesmo container CDI.

Compartilhar 𝕏 🦋 in