Dependency Injection (DI) is a design pattern that decouples the creation of an object's dependencies from the object itself. Instead of hard-coding dependencies, they are provided ("injected") from ...