Jeśli kontener IoC jest inwazyjny, to znaczy, że kod musi być wyraźnie świadomi wstrzykiwania zależności. Na przykład w Guice używa się adnotacji @Inject
(i innych). Adnotacje te są bardziej znormalizowane niż kiedyś, co jest dobre - oznacza to, że dzięki pojedynczemu zestawowi adnotacji (przynajmniej teoretycznie) możesz udostępnić swój kod do użycia z różnymi inwazyjnymi kontenerami IoC.
Z nieinwazyjny pojemniku, można napisać kod bez odniesienia do IoC w ogóle ... wszystko jest tylko określa refleksji nad członkami i adnotacji, które byłyby obecne, nawet jeśli nie były przy użyciu IoC .
Istnieją plusy i minusy zarówno inwazyjnych, jak i nieinwazyjnych pojemników - bardziej szczegółowe w kodzie mogą na przykład zapewnić większą kontrolę nad niektórymi szczegółami wiązania - ale warto być świadomym różnicy.
Wiosna to rak dla projektu, który po zainfekowaniu projektu nie da się zrobić bez włamywania się do wiosennych plików konfiguracyjnych ... nieinwazyjny jest dość mylący na tym froncie! –
Całkowicie zgadzam się, że wiosna to rak. W rzeczywistości jest to rak, który rozprzestrzenił się w całym obszarze kodu, a baza kodów nie pozostała długo w użyciu. –