2010-05-13 13 views
6

Wiem, że Spring nie obsługuje wtrysku interfejsu i czytałem to wiele razy.Czy wiosna naprawdę nie wspiera w ogóle iniekcji interfejsu?

Ale dzisiaj, gdy natknąłem się na artykuł o IOC autorstwa Martina Fowlera (link), wydaje się, że użycie aplikacji ApplicationContextAware na wiosnę jest podobne do wtrysku interfejsu.

kiedy kiedykolwiek wymagane jest kontekstowe odniesienie do Spring w naszym Spring bean, zaimplementujemy ApplicationContextAware i wdrożymy metodę setApplicationContext (ApplicationContext), a my uwzględnimy komponent bean w pliku konfiguracyjnym. Czy to nie jest to samo, co wtryskiwanie interfejsu, gdzie mówienie sprężyście, aby wstrzyknąć (lub), powiedzmy, przekazać odniesienie kontekstu do tego fasoli?

Czy coś tu brakuje? Dzięki za wszelkie informacje!

ManiKanta

+3

Wygląda na to, że czytasz jakieś złe rzeczy, Wiosna bardzo * działa * obsługuje wtrysk interfejsu. – skaffman

+1

co dokładnie masz na myśli przez "wtrysk interfejsu"? Mam tylko około 100 przykładów fasoli, która definiuje void setSomething (Something), gdzie Something jest interfejsem, a nie klasą, a wiosna jest całkowicie zadowolona z wstrzykiwania wystąpień klas implementujących interfejs? – bmargulies

+0

@skaffman nie widzę, że wiosna obsługuje interfejsu iniekcji, nawet w docs sprężyna (http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html# beans-factory-collaborators) – manikanta

Odpowiedz

6

Jeśli masz na myśli interfejs zastrzyk as defined on wikipedia, wiosna wspiera go z pudełka dla ResourceLoaders, ApplicationContexts, MessageSource i innych, z interfejsami ResourceLoaderAware, , MessageSourceAware odpowiednio.

Możliwe jest również rozszerzenie tego mechanizmu z nowymi interfejsami an depedencies rejestrując BeanPostProcessor.

Instrukcja odniesienia Wiosna explains tę zdolność (i kiedy powinno się (nie) używać go) dość wyraźnie. Przy okazji, ogólnie uważam, że podręcznik referencyjny wiosna jest znacznie bardziej wiarygodny niż to, co mówi "ktoś w Internecie".

+1

Tak! Mimo że Spring nie obsługuje faktycznie wtrysku interfejsu, wciąż możemy osiągnąć ten sam efekt, praktycznie używając techniki Autowiring (http://opensource.atlassian.com/confluence/spring/display/DISC/Adding+Interface+Injection+to+Spring). BTW, Martin Fowler jest facetem, który wprowadził DI. Czyż nie? Może więc możemy sprawdzić jego artykuł. Tak, ten artykuł jest w ogóle. Zatem cała zawartość artykułu może nie być dobra dla przypadku Spring. Popraw mnie, jeśli coś jest nie tak! – manikanta

Powiązane problemy