Dhanji R. Prasanna's book Dependency Injection In Action is great.
I used to think - having written DI frameworks years ago before the term even got coined - that DI was all hype. However, since I recently had to work with a code base completely based on singletons and factories, I now see the problems with not using DI for at least portions of your code. That DI-less code was incredibly tightly coupled, which had the unfortunate effect that simple changes result in an avalanche of cascading effects.
Reading Dependency In Action was an eye opener in the sense that it articulated what I instinctively knew, but what never quite crystalized in my mind. Also, there are interesting tips throughout the book about some of the common pitfalls when implementing DI, and even a chapter with tips for framework developers!
I think more people can learn from this book than they realize. In my experience, a lot of people use frameworks like Spring because everyone else uses it, without really understanding the core problem it solves. This book will give you that background.