A ----------------- is a value that can be injected everywhere. The value of a it can never be changed.
A ----------------- is a configurable factory.
A ----------------- can modify or encapsulate other providers except a constant.
A ----------------- is an injectable function.
A ----------------- is an injectable constructor.
A ----------------- is just a simple injectable.