Inversion of Control (IoC) and Dependency Injection (DI)
Inversion of Control is a design principle: instead of a class creating its own dependencies, it receives them from an external source. Dependency Injection is the most common way to implement IoC — a container constructs objects and injects their collaborators. Spring's IoC container is the engine that drives the entire framework.