CDI (Contexts and Dependency Injection) je standardni DI framework v Java EE. Od verze 6 je soucast specifikace a konecne nabizi to, co Spring mel roky — typove bezpecnou dependency injection s anotacemi.
Zaklady CDI¶
@Inject misto new. Container spravuje lifecycle objektu, resi zavislosti automaticky. Zadne XML konfigurace — CDI pouziva anotace a convention. Kazda trida s beans.xml v META-INF/WEB-INF je CDI bean.
Scopes¶
@RequestScoped — novy objekt per HTTP request. @SessionScoped — per HTTP session. @ApplicationScoped — singleton. @ConversationScoped — explicitne rizeny scope pres viac requestu. @Dependent — default, novy objekt pri kazde injekci. Spravny scope je klicovy pro spravnou funkcnost a vykon.
Producers¶
@Produces metoda vytvari objekty, ktere CDI container nemuze vyrobit automaticky (EntityManager, konfiguracni 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 rozsireni business logiky bez zmeny originalu.
CDI vs. Spring DI¶
CDI: standard, soucast Java EE, typove bezpecne kvalifikatory. Spring: starsi, vetsi ekosystem, funguje i bez app serveru. Pro Java EE projekty: CDI. Pro Spring projekty: Spring DI. Nemiixujte oba v jedne aplikaci.
Zaverem¶
CDI je dospely DI framework. Pro Java EE projekty je to preferovana volba — standardni, typove bezpecny a s vybornou integraci s EJB a JPA. Spring DI zustava lepssi volba mimo Java EE kontejner.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns