Nicely said. While I like Spring a lot, I'm not a huge fan of IoC because it makes failures harder to deal with. E.g. if a resource fails to load/inject the error messages are just unreadable.
But once it does work it's pretty cool. You can write simple objects that ignore most of the complex questions like "which database am I using" and "on which machine is it located". You can define defaults in the configuration and you can easily override them in production.