Play's runtime dependency injection support is built on JSR-330, which provides a specification for declaring how
dependencies get wired to components. JSR-330 however does not address how components are provided to or located
by a DI container. Play's API seeks to address this in a DI container agnostic way.

The reason for providing this abstraction is so that Play, the modules it provides, and third party modules can all
express their bindings in a way that is not specific to any one DI container.

Components are bound in the DI container. Each binding is identified by a BindingKey, which is
typically an interface that the component implements, and may be optionally qualified by a JSR-330 qualifier
annotation. A binding key is bound to a BindingTarget, which describes how the implementation
of the interface that the binding key represents is constructed or provided. Bindings may also be scoped using
JSR-330 scope annotations.

The initial configuration. This configuration is not necessarily the same
configuration used by the application, as the ApplicationLoader may, through it's own
mechanisms, modify it or completely ignore it.

lifecycle

Used to register hooks that run when the application stops.

devContext

If an application is loaded in dev mode then this additional context is available.

Locates and loads the necessary configuration files for the application.

environment

The application environment.

initialSettings

The initial settings. These settings are merged with the settings from the loaded
configuration files, and together form the initialConfiguration provided by the context. It
is intended for use in dev mode, to allow the build system to pass additional configuration
into the application.

sourceMapper

An optional source mapper.

Annotations

@deprecated

Deprecated

(Since version 2.7.0) Context properties have changed; use the default Context apply method or Context.create instead