Enterprise متوسط

استبدل @ManagedBean المُهمَل في JSF بـ CDI @Named للحصول على نموذج حقن تبعيات موحّد.

✕ 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;
    }
}
هل ترى مشكلة في هذا الكود؟ أخبرنا.
🔗

نموذج موحّد

حاوية CDI واحدة تدير جميع الحبّات — JSF والـ REST وطبقات الخدمة تشترك في نفس الحقن.

🗑️

كليشيه أقل

@Inject تستبدل @ManagedProperty ودالة الضبط المطلوبة.

🔮

مُستقبلي

تمت إزالة @ManagedBean في Jakarta EE 10؛ @Named هو البديل المدعوم.

الأسلوب القديم
@ManagedBean
الأسلوب الحديث
@Named + CDI
منذ JDK
11
الصعوبة
متوسط
JSF Managed Bean مقابل CDI Named Bean
متاح

CDI @Named متاح منذ Java EE 6؛ تمت إزالة @ManagedBean في Jakarta EE 10

تم إهمال @ManagedBean و @ManagedProperty في Jakarta Faces 2.3 وإزالتهما في Jakarta EE 10. يستخدم البديل القائم على CDI @Named لكشف الحبّة لتعبيرات EL و @Inject لتوصيل التبعيات. يوحّد هذا نموذج الحبّة: صفحات JSF وموارد JAX-RS وEJBs تشترك في نفس حاوية CDI.

مشاركة 𝕏 🦋 in