Dependency injection is providing the objects that an object needs (its dependencies) instead of having it construct them itself. An IoC( Inversion of Control) container will be used to wire up the dependencies. Benefits: Enables loosely-coupled design.Easily swap in mocks/fake objects for developing tests.Easily re-configure different types of dependencies.Parallel development on the dependencies