Enterprise Średniozaawansowany

Zastąp ciężkie EJB lekkimi beanami CDI do wstrzykiwania zależności i zarządzania transakcjami.

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

Lekki

Beany CDI to zwykłe klasy Java bez interfejsów ani deskryptorów specyficznych dla EJB.

💉

Ujednolicone wstrzykiwanie

@Inject działa dla każdego zarządzanego beana, zasobów JAX-RS i komponentów Jakarta EE jednakowo.

🧪

Łatwe testowanie jednostkowe

Zwykłe klasy bez narzutu proxy EJB są proste do instancjonowania i mockowania.

Stare podejście
EJB
Nowoczesne podejście
Bean CDI
Od JDK
11
Poziom trudności
Średniozaawansowany
EJB kontra CDI
Dostępne

Szeroko dostępne od Jakarta EE 8 / Java 11

CDI (Contexts and Dependency Injection) zapewnia to samo wstrzykiwanie zależności i zarządzanie transakcjami co EJB, ale jako zwykłe klasy Java bez interfejsów ani klas bazowych specyficznych dla kontenera. Zasięgi takie jak @ApplicationScoped i @RequestScoped kontrolują cykl życia, a @Transactional zastępuje obowiązkową semantykę transakcji EJB.