Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

CDI — Dependency Injection v Java EE

05. 11. 2013 1 min čtení CORE SYSTEMSdevelopment

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.

cdijava eedienterprise