AngularJS dependency injection is a software design pattern in which components are given their dependencies rather than hard coding within component i.e. for reusing, maintainable and testable.
Following core components are injected into other as dependencies:
factory: This is used to return value after calculation.
service: This is used to perform certain tasks.
provider: This is used to create services, factory etc.
constant: This is used to pass values at config stage as we need to consider that no value will be used to be passed.