Enterprise Średniozaawansowany

Replace deprecated JSF @ManagedBean with CDI @Named for a unified dependency injection model.

✕ 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;
    }
}
Widzisz problem z tym kodem? Daj nam znać.
🔗

Unified model

One CDI container manages all beans — JSF, REST, and service layers share the same injection.

🗑️

Less boilerplate

@Inject replaces @ManagedProperty and its required setter method.

🔮

Future-proof

@ManagedBean is removed in Jakarta EE 10; @Named is the supported replacement.

Stare podejście
@ManagedBean
Nowoczesne podejście
@Named + CDI
Od JDK
11
Poziom trudności
Średniozaawansowany
JSF Managed Bean vs CDI Named Bean
Dostępne

CDI @Named available since Java EE 6; @ManagedBean removed in Jakarta EE 10

JSF's @ManagedBean and @ManagedProperty were deprecated in Jakarta Faces 2.3 and removed in Jakarta EE 10. The CDI-based replacement uses @Named to expose the bean to EL expressions and @Inject for dependency wiring. This unifies the bean model: JSF pages, JAX-RS resources, and EJBs all share the same CDI container.

Udostępnij 𝕏 🦋 in