He estado leyendo más sobre el principio de Inversión de control y la Inyección de dependencias como una implementación del mismo y estoy bastante seguro de que lo entiendo.
Parece estar básicamente diciendo 'no declares las instancias de los miembros de tu clase dentro de la clase'. Más bien que las instancias deberían pasarse y asignarse a través del constructor; 'inyectado' en la clase desde una fuente externa.
Si es así de simple, lo que parece ser, ¿por qué necesitamos marcos como spring o guice que implementen esto con anotaciones? ¿Me estoy perdiendo algo fundamental aquí? Realmente estoy luchando por comprender cuál es el uso de los marcos de inyección de dependencia.
Editar: sobre el posible duplicado, creo que mi pregunta es más única, ya que se trata de marcos DI en general, no solo Spring. Spring no es solo un marco DI, por lo que hay muchas razones por las que alguien querría usar Spring que no estén relacionadas con DI.