Zum Inhalt springen
_CORE
KI & Agentensysteme Unternehmensinformationssysteme Cloud & Platform Engineering Datenplattform & Integration Sicherheit & Compliance QA, Testing & Observability IoT, Automatisierung & Robotik Mobile & Digitale Produkte Banken & Finanzen Versicherungen Öffentliche Verwaltung Verteidigung & Sicherheit Gesundheitswesen Energie & Versorgung Telko & Medien Industrie & Fertigung Logistik & E-Commerce Retail & Treueprogramme
Referenzen Technologien Blog Know-how Tools
Über uns Zusammenarbeit Karriere
CS EN DE
Lassen Sie uns sprechen

CDI — Dependency Injection in Java EE

05. 11. 2013 1 Min. Lesezeit CORE SYSTEMSdevelopment
CDI — Dependency Injection in Java EE

CDI (Contexts and Dependency Injection) ist das Standard-DI-Framework in Java EE. Seit Version 6 ist es Teil der Spezifikation und bietet endlich das, was Spring seit Jahren hat — typsichere Dependency Injection mit Annotationen.

CDI-Grundlagen

@Inject statt new. Der Container verwaltet den Objektlebenszyklus und löst Abhängigkeiten automatisch auf. Keine XML-Konfiguration — CDI verwendet Annotationen und Konventionen. Jede Klasse mit einer beans.xml in META-INF/WEB-INF ist ein CDI Bean.

Scopes

@RequestScoped — neues Objekt pro HTTP-Request. @SessionScoped — pro HTTP-Session. @ApplicationScoped — Singleton. @ConversationScoped — explizit verwalteter Scope über mehrere Requests hinweg. @Dependent — Standard, neues Objekt an jedem Injektionspunkt. Die Wahl des richtigen Scopes ist entscheidend für korrektes Verhalten und Performance.

Producers

@Produces-Methoden erzeugen Objekte, die der CDI-Container nicht automatisch erstellen kann (EntityManager, Konfigurationswerte, externe Ressourcen). Eine Alternative zum Factory Pattern — sauberer und deklarativer.

Interceptors und Decorators

Interceptors für Querschnittsbelange: @Interceptor mit @AroundInvoke für Logging, Security, Caching. Der @Transactional-Interceptor ersetzt EJB-Transaktionen. Decorators zur Erweiterung der Business-Logik ohne Änderung des Originals.

CDI vs. Spring DI

CDI: Standard, Teil von Java EE, typsichere Qualifikatoren. Spring: älter, größeres Ökosystem, funktioniert auch ohne App-Server. Für Java-EE-Projekte: CDI. Für Spring-Projekte: Spring DI. Mischen Sie nicht beides in derselben Anwendung.

Fazit

CDI ist ein ausgereiftes DI-Framework. Für Java-EE-Projekte ist es die bevorzugte Wahl — standardisiert, typsicher und mit hervorragender Integration mit EJB und JPA. Spring DI bleibt die bessere Wahl außerhalb des Java-EE-Containers.

cdijava eedienterprise
Teilen:

CORE SYSTEMS

Wir bauen Kernsysteme und KI-Agenten, die den Betrieb am Laufen halten. 15 Jahre Erfahrung mit Enterprise-IT.

Brauchen Sie Hilfe bei der Implementierung?

Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.

Kontaktieren Sie uns