Enterprise Intermediário

Substitua EJBs pesados por beans CDI leves para injeção de dependências e transações.

✕ 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());
    }
}
Viu um problema com este código? Nos avise.
🪶

Leve

Beans CDI são classes Java simples sem interfaces ou descritores específicos do EJB.

💉

Injeção unificada

@Inject funciona para qualquer bean gerenciado, recursos JAX-RS e componentes Jakarta EE.

🧪

Testes unitários fáceis

Classes simples sem overhead de proxy EJB são fáceis de instanciar e mockar.

Abordagem Antiga
EJB
Abordagem Moderna
CDI Bean
Desde o JDK
11
Dificuldade
Intermediário
EJB versus CDI
Disponível

Amplamente disponível desde o Jakarta EE 8 / Java 11

CDI (Contexts and Dependency Injection) oferece a mesma injeção de dependências e gerenciamento de transações dos EJBs, mas como classes Java simples sem interfaces ou superclasses específicas do container. Escopos como @ApplicationScoped e @RequestScoped controlam o ciclo de vida, e @Transactional substitui a semântica obrigatória de transações do EJB.

Compartilhar 𝕏 🦋 in