Enterprise Intermedio

Sostituisci il deprecato JSF @ManagedBean con CDI @Named per un modello unificato di dependency injection.

✕ 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;
    }
}
Vedi un problema con questo codice? Faccelo sapere.
🔗

Modello unificato

Un container CDI gestisce tutti i bean — JSF, REST e i livelli di servizio condividono la stessa iniezione.

🗑️

Meno boilerplate

@Inject sostituisce @ManagedProperty e il suo metodo setter richiesto.

🔮

A prova di futuro

@ManagedBean è rimosso in Jakarta EE 10; @Named è il sostituto supportato.

Approccio Vecchio
@ManagedBean
Approccio Moderno
@Named + CDI
Dal JDK
11
Difficoltà
Intermedio
JSF Managed Bean vs CDI Named Bean
Disponibile

CDI @Named disponibile da Java EE 6; @ManagedBean rimosso in Jakarta EE 10

JSF's @ManagedBean e @ManagedProperty sono stati deprecati in Jakarta Faces 2.3 e rimossi in Jakarta EE 10. Il sostituto CDI usa @Named per esporre il bean alle espressioni EL e @Inject per il cablaggio delle dipendenze. Questo unifica il modello di bean: le pagine JSF, le risorse JAX-RS e gli EJB condividono tutti lo stesso container CDI.

Condividi 𝕏 🦋 in