A Play dependency injection module.
Dependency injection modules can be used by Play plugins to provide bindings for JSR-330 compliant
ApplicationLoaders. Any plugin that wants to provide components that a Play application can use may implement
one of these.
Providing custom modules can be done by appending their fully qualified class names to play.modules.enabled in
application.conf, for example
play.modules.enabled += "com.example.FooModule"
play.modules.enabled += "com.example.BarModule"
It is strongly advised that in addition to providing a module for JSR-330 DI, that plugins also provide a Scala
trait that constructs the modules manually. This allows for use of the module without needing a runtime dependency
The bind methods are provided only as a DSL for specifying bindings. For example:
def bindings(env: Environment, conf: Configuration) = Seq(
Get the bindings provided by this module.
Implementations are strongly encouraged to do *nothing* in this method other than provide bindings. Startup
should be handled in the constructors and/or providers bound in the returned bindings. Dependencies on other
modules or components should be expressed through constructor arguments.
The configuration and environment a provided for the purpose of producing dynamic bindings, for example, if what
gets bound depends on some configuration, this may be read to control that.
A sequence of bindings
Create a binding key for the given class.
Create a seq.
For Java compatibility.