CDI (Contexts and Dependency Injection) je standardní DI framework v Java EE. Od verze 6 je součást specifikace a konecne nabízí to, co Spring měl roky — typove bezpečnou dependency injection s anotacemi.
Zaklady CDI¶
@Inject misto new. Container spravuje lifecycle objektu, řeší zavislosti automaticky. Zadne XML konfigurace — CDI používá anotace a convention. Každá třída s beans.xml v META-INF/WEB-INF je CDI bean.
Scopes¶
@RequestScoped — nový objekt per HTTP request. @SessionScoped — per HTTP session. @ApplicationScoped — singleton. @ConversationScoped — explicitně rizeny scope pres viac requestu. @Dependent — default, nový objekt pri každé injekci. Správný scope je klíčový pro správnou funkčnost a vykon.
Producers¶
@Produces metoda vytváří objekty, které CDI container nemůže vyrobit automaticky (EntityManager, konfigurační hodnoty, externi zdroje). Alternativa k factory patternu — cistsii a deklarativni.
Interceptors a Decorators¶
Interceptors pro cross-cutting concerns: @Interceptor s @AroundInvoke pro logovani, security, caching. @Transactional interceptor nahrazuje EJB transakce. Decorators pro rozšíření business logiky bez zmeny originalu.
CDI vs. Spring DI¶
CDI: standard, součást Java EE, typove bezpecne kvalifikatory. Spring: starší, větší ekosystem, funguje i bez app serveru. Pro Java EE projekty: CDI. Pro Spring projekty: Spring DI. Nemiixujte oba v jedné aplikaci.
Závěrem¶
CDI je dospěly DI framework. Pro Java EE projekty je to preferovaná volba — standardní, typove bezpečný a s výbornou integraci s EJB a JPA. Spring DI zůstává lepssi volba mimo Java EE kontejner.
Potřebujete pomoc s implementací?
Naši experti vám pomohou s návrhem, implementací i provozem. Od architektury po produkci.
Kontaktujte nás