Dependency Injection (DI) is a design pattern and a technique used in software development to achieve Inversion of Control (IoC) between classes and their dependencies. In simpler terms, it's a way to provide objects (dependencies) that a class needs (its dependencies) from an external source rather than creating them itself