@ngdoc overview
@name Developer Guide: About Dependency Injection (DI)
@description

Dependency Injection (DI) is an object-oriented software design pattern that supports the
decoupling and dependency management of application components.

The idea behind DI is to decouple each component from all of the other components that it depends
on to do its particular job. The way this is done in DI is by moving the responsibility for
managing dependencies out of each individual component and into a provider component. The provider
(or injector) component manages the life cycles and dependencies for all of the other components in
an application.

Angular has a built-in dependency management subsystem that helps to make your applications easier
to develop, understand, and test.

For more information on DI in general, see {@link http://en.wikipedia.org/wiki/Dependency_injection
Dependency Injection} at Wikipedia, and {@link http://martinfowler.com/articles/injection.html
Inversion of Control} by Martin Fowler, or read about DI in your favorite software design pattern
book.


## Related Topics

* {@link dev_guide.di.understanding_di Understanding DI in Angular}
* {@link dev_guide.services Angular Services}


## Related API

* {@link api/angular.module.ng Service API}
* {@link api/angular.injector Angular Injector API}
