2010-05-13 10 views
6

Ich weiß, dass Spring Interface-Injektion nicht unterstützt und ich habe das oft gelesen.Unterstützt Spring überhaupt keine Interface-Injektion?

Aber heute, als ich auf einen Artikel über IOC von Martin Fowler stieß(), scheint es mit ApplicationContextAware im Frühjahr ist etwas ähnlich wie die Schnittstelle Injektion.

Wenn in unserer Spring-Bean Spring-Kontextreferenz erforderlich ist, implementieren wir ApplicationContextAware und implementieren die setApplicationContext (ApplicationContext-Kontext) -Methode, und wir fügen die Bean in die Konfigurationsdatei ein. Ist das nicht das selbe wie Interface injection, wo wo dem Frühling sagen zu injizieren (oder), sagen wir, die Referenz des Kontextes in diese Bohne zu geben?

Oder ich bin hier fehlt etwas? Danke für jede Information!

ManiKanta

+3

Klingt wie Sie einige schlechte Sachen gelesen haben, Frühling sehr viel * macht * Unterstützung Schnittstelle Injektion. – skaffman

+1

was genau meinst du mit "Interface-Injektion"? Ich habe nur etwa 100 Beispiele für eine Bean, die void setSomething (Etwas) definiert, wobei Something eine Schnittstelle ist, keine Klasse, und spring ist vollkommen glücklich, Klasseninstanzen zu injizieren, die die Schnittstelle implementieren? – bmargulies

+0

@skaffman ich nicht, dass Frühling sah unterstützt Injection-Schnittstelle, auch in den Frühling docs (http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html# beans-factory-collaborators) – manikanta

Antwort

6

Wenn Sie Injektion bedeuten Schnittstelle as defined on wikipedia, Feder unterstützt es aus der Box für ResourceLoaders, ApplicationContexts, Message und andere, mit den Schnittstellen ResourceLoaderAware, , MessageSourceAware sind.

Es ist auch möglich, diesen Mechanismus mit neuen Schnittstellen durch ein depedencies zu erweitern, um ein BeanPostProcessor Registrierung.

Der Frühling Referenzhandbuch explains diese Fähigkeit (und wann sollte man (nicht) es verwenden) ganz klar. BTW, ich habe im Allgemeinen gefunden, dass das Frühlingsreferenzhandbuch viel zuverlässiger ist, als was "jemand im Internet" sagt.

+1

Yeah! Obwohl Spring eigentlich keine Interface-Injektion unterstützt, können wir den gleichen Effekt praktisch mit der Autowiring-Technik erreichen (http://opensource.atlassian.com/confluence/spring/display/DISC/Adding+Interface+Injection+to+Spring)). BTW, Martin Fowler ist der Typ, der die DI eingeführt. Ist es nicht? Also, vielleicht können wir seinen Artikel überprüfen. Ja, dieser Artikel ist im Allgemeinen. Der Inhalt des Artikels kann also nicht für den Spring-Fall gelten. Korrigieren Sie mich, wenn etwas nicht stimmt! – manikanta

Verwandte Themen