Enterprise Fortgeschritten

Ersetze das veraltete JSF-@ManagedBean durch CDI-@Named für ein einheitliches Dependency-Injection-Modell.

✕ 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;
    }
}
Problem mit diesem Code entdeckt? Sag uns Bescheid.
🔗

Einheitliches Modell

Ein einziger CDI-Container verwaltet alle Beans — JSF, REST und Service-Schichten teilen dieselbe Injektion.

🗑️

Weniger Boilerplate

@Inject ersetzt @ManagedProperty und dessen erforderliche Setter-Methode.

🔮

Zukunftssicher

@ManagedBean wurde in Jakarta EE 10 entfernt; @Named ist der unterstützte Ersatz.

Alter Ansatz
@ManagedBean
Moderner Ansatz
@Named + CDI
Seit JDK
11
Schwierigkeitsgrad
Fortgeschritten
JSF Managed Bean vs. CDI Named Bean
Verfügbar

CDI @Named verfügbar seit Java EE 6; @ManagedBean entfernt in Jakarta EE 10

JSFs @ManagedBean und @ManagedProperty wurden in Jakarta Faces 2.3 als veraltet markiert und in Jakarta EE 10 entfernt. Der CDI-basierte Ersatz verwendet @Named, um den Bean für EL-Ausdrücke verfügbar zu machen, und @Inject für die Abhängigkeitsverdrahtung. Dies vereinheitlicht das Bean-Modell — JSF-Seiten, JAX-RS-Ressourcen und EJBs teilen denselben CDI-Container.

Teilen 𝕏 🦋 in