Inversion of control to słaby termin, bo odnosi się do wielu różnych zastosowań. Samo odwrócenie czegoś, co nie ma określonego zwrotu też jest sus
Za wiki:
such as the Spring framework. In this different sense, "inversion of control" refers to granting the framework control over the implementations of dependencies that are used by application objects rather than to the original meaning of granting the framework control flow (control over the time of execution of application code e.g. callbacks).
Czyli według tego wynika, że IoC w kontekście springa różni się tym od non-IoC, że z IoC framework ma kontrolę nad doborem zależności do poszczególnych komponentów.
is a design principle in which custom-written portions of a computer program receive the flow of control from a generic framework.
To trochę jest podejrzane. Wyobraź sobie, że masz taki kod:
service = spring_pls_give_me_a_wired_service()
service.run()
vs
spring_run_all_beans()
W pierwszym przypadku mamy IoC na poziomie łączenia zależności, ale nie wykonywania kodu aplikacji (poza konstruktorami oczywiście). Drugi przypadek to IoC na pełnej. Pytanie: czy jedna linijka kodu sprawia, że IoC staje się mniej IoC? Kod frameworku nie zmienił się nic a nic
Jak zwykle radzę wyrobić sobie intuicję i się tym nie przejmować, bo nie ma sensu dywagować na temat złych pojęć i abstrakcji, które sobie ewoluowały w burzliwy sposób (polecam wiki).