> JSR 330 ist eine Spezifikation für JSE, allerdings wird die erst in
> Q1 2010 finalisiert - frühestens. Da ohnehin Spring DI eine Art
> Quasistandard für DI ist, kann man mal hoffen, dass das sogar klappen
> wird. Sie werden also JEE6 ausliefern mit Komponenten, die auf einer
> JSE Spezifikation basieren, die noch nicht fertig ist? Respekt!
JSR 299 Soll die gleichen Annotationsklassen nutzen wie JSR 330. Die
Semantik im Java EE Container wird nicht 100% der in Java SE
entsprechen. Zumal in Java EE sich ein Container um die
Abhängigkeiten kümmert, den es in Java SE nicht gibt. Und das der JSR
330 erst 2010 fertig wird dürfte eher an den Formalien des JCP
liegen.
> Davon ab: Das man DI überhaupt mit Annotations macht, zeigt doch
> eigentlich, dass das Konzept nicht das hält was es verspricht.Â
>Â
> In dem Moment, wo ich die Sachen in Annotations habe, kann sie auch
> in eine zentrale Factory Klasse hardkodieren und nur diese über DI
> verfügbar machen. So wird DI eine weiterer EDV Mode, die in
> "Standards" gegossen bis in alle Ewigkeit überdauern wird :-).
Dass ist eine Frage des Geschmacks und ob man Abhängigkeiten zur
Laufzeit ändern will/muss oder ob eine statische Konfiguration (und
eventuell ein konfigurierbares Deployment) reicht. Soweit ich
informiert bin gibt es bei JSR-299 zumindest eine API mit der die
Konfiguration zur Laufzeit geändert werden kann (eine Konfiguration
über XML wurde wohl gestrichen).
Ein Nachteil von Annotationen ist, dass keine binär vorliegenden
Klassen nachträglich mit den Konzepten versehen werden können.
Außerdem hat man in den Klassen Abhängigkeiten zu den Annotationen.
Wenn man die Klassen außerhalb eines DI Frameworks wiederverwenden
will, schleift man immer die Annotationen mit.
Aber: Die expliziten JNDI Aufrufe mit anschließendem Corba-Cast fand
ich bei J2EE 1.4 ziemlich schaurig. Da ist mir DI mit Annotationen
schon lieber.
GruĂź,
Max