| Simply, any object capable of providing instances of type
T .
Providers are used in numerous ways by the Guice framework:
- When the default means for obtaining instances (an injectable or
parameterless constructor) is insufficient for a particular binding, the
module can specify a custom
Provider instead, to control exactly how
Guice creates or obtains instances for the binding.
- An implementation class may always choose to have a
Provider instance injected, rather than having a
T injected directly. This
may give you access to multiple instances, instances you wish to safely
mutate and discard, instances which are out of scope (e.g. using a
@RequestScoped object from within a
@SessionScoped object),
or instances you don't want to initialize until they are absolutely needed.
- A custom
Scope is implemented as a decorator of
Provider , which decides when to delegate to the backing provider
and when to provide the instance some other way.
- The
Injector offers access to the
Provider it uses
to fulfill requests for a given key, via the
Injector.getProvider methods.
< Parameters: T - > the type of object this provider provides author: crazybob@google.com (Bob Lee) |