Enterprise Intermédiaire

Remplace les lourds EJB par des beans CDI légers pour l'injection de dépendances et les transactions.

✕ 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());
    }
}
Un problème avec ce code ? Dites-le nous.
🪶

Léger

Les beans CDI sont des classes Java simples sans interfaces ni descripteurs EJB spécifiques.

💉

Injection unifiée

@Inject fonctionne pour n'importe quel bean géré, ressources JAX-RS et composants Jakarta EE de la même façon.

🧪

Tests unitaires simples

Des classes simples sans la surcharge du proxy EJB sont faciles à instancier et à simuler.

Ancienne Approche
EJB
Approche Moderne
Bean CDI
Depuis JDK
11
Difficulté
Intermédiaire
EJB versus CDI
Disponible

Disponible depuis Jakarta EE 8 / Java 11

CDI (Contexts and Dependency Injection) offre la même injection de dépendances et gestion des transactions que les EJB, mais sous forme de classes Java simples sans interfaces ni superclasses spécifiques au conteneur. Les portées comme @ApplicationScoped et @RequestScoped contrôlent le cycle de vie, et @Transactional remplace la sémantique transactionnelle obligatoire des EJB.

Partager 𝕏 🦋 in