Enterprise متوسط

استبدل EJBs الثقيلة بحبّات CDI الخفيفة لحقن التبعيات والمعاملات.

✕ Java EE
@Stateless
public class OrderEJB {
    @EJB
    private InventoryEJB inventory;

    public void placeOrder(Order order) {
        // container-managed transaction
        inventory.reserve(order.getItem());
    }
}
✓ Jakarta EE 8+
@ApplicationScoped
public class OrderService {
    @Inject
    private InventoryService inventory;

    @Transactional
    public void placeOrder(Order order) {
        inventory.reserve(order.getItem());
    }
}
هل ترى مشكلة في هذا الكود؟ أخبرنا.
🪶

خفيف الوزن

حبّات CDI هي فئات Java عادية دون واجهات أو واصفات خاصة بـ EJB.

💉

حقن موحّد

@Inject يعمل لكل حبّة مُدارة وموارد JAX-RS ومكوّنات Jakarta EE.

🧪

اختبار وحدة سهل

الفئات العادية دون تكلفة وكيل EJB سهلة الإنشاء والمحاكاة.

الأسلوب القديم
EJB
الأسلوب الحديث
حبّة CDI
منذ JDK
11
الصعوبة
متوسط
EJB مقابل CDI
متاح

متاح على نطاق واسع منذ Jakarta EE 8 / Java 11

يوفر CDI (السياقات وحقن التبعيات) نفس حقن التبعيات وإدارة المعاملات كـ EJBs لكن كفئات Java عادية دون واجهات أو مصفوفات خاصة بالحاوية. تتحكم النطاقات مثل @ApplicationScoped و @RequestScoped في دورة الحياة، و@Transactional تستبدل دلالات معاملة EJB الإلزامية.

مشاركة 𝕏 🦋 in